强制从派生类外部调用基本方法

Gra*_*ton 5 c# inheritance overriding

我有两节课:

public class MyBase
{
    public virtual void DoMe()
    {

    }
}

public class MyDerived:MyBase
{
    public override void DoMe()
    {
        throw  new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下代码来实例化MyDerived:

        MyDerived myDerived=new MyDerived();
Run Code Online (Sandbox Code Playgroud)

问题是如何调用基类的DoMe?如果我使用myDerived.DoMe(),则会调用派生方法,从而导致异常.我试图将myDerived转换为MyBase,但它仍然是被调用的方法的派生版本.

编辑:如下面的评论所述,我无法更改eitehr MyDerived或MyBase,因为它们不是我的代码.

Jus*_*ant 4

有一个解决方案,但它很难看:使用反射来获取基类方法,然后发出调用它所需的 IL。查看这篇博客文章,其中说明了如何执行此操作。当我拥有的只是对重写该方法的派生类的引用时,我已经成功地使用这种方法来调用基类的方法实现。