c# - 从基方法调用派生方法的主体
问题描述
有没有办法从基础调用重写方法的主体?例如:
public class BaseClass
{
public virtual void DoMe()
{
using(new UseSomething())
{
//invoke the derived method body
}//end using
}//end do me
}//end base class
public class Der : BaseClass
{
public override void DoMe()
{
Console.WriteLine("der do me");
}//end do me
}//end der class
解决方案
显然,您想从基类 ( using(new UseSomething())
) 中建立的上下文中调用某些逻辑的派生实现。
这强烈暗示必须继承基类,如果不是,则没有意义。这自然会导致标记 it abstract
,这反过来自然会解决您的问题:
public abstract class BaseClass
{
public void DoMe()
{
using (new UseSomething())
{
ActualDoMe();
}
}
protected abstract void ActualDoMe();
}
public class Der : BaseClass
{
protected override void ActualDoMe()
{
Console.WriteLine("der do me");
}
}
推荐阅读
- angular - Enter 上的角(单击)事件按发送 MouseEvent 而不是 KeyboardEvent
- apache-spark - 从 hive 运行 spark 作业时出错。- 错误:java.lang.NoClassDefFoundError: org/apache/spark/SparkConf (state=,code=0)
- python - 无法保存更新版本的 Excel
- angular - 将选定状态设置为选项标签
- php - 将 ubuntu/PHP 7.2 迁移到 Debian/PHP 7.3 后,Nginx WordPress 网站损坏
- php - 基于 PHP 和 JSON 的 CRUD 操作
- slack - 如何使用 slack API 使 slack 频道/组静音?
- php - 使用 PHP 和 Vue.js 进行应用程序开发设置
- moqui - search-form-inputs 标记无法与 econditions 一起正常工作
- assembly - 计算机如何决定操作码的长度?