首页 > 解决方案 > 从基方法调用派生方法的主体

问题描述

有没有办法从基础调用重写方法的主体?例如:

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

标签: c#

解决方案


显然,您想从基类 ( 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");
    }
}

推荐阅读