如何使用c#覆盖另一个方法内部的方法

时间:2013-04-18 06:41:13

标签: c# inheritance methods override

我是C#的新手,我需要弄清楚如何在不实现继承的情况下覆盖新类方法中的类方法,在Java中我可以这样做:

Class classA{
  void method1(){
       statements ....
       ....
       classB obj = new classBb(){
            @override
            void someMethod(){ //from ClassB
              statements ....
              ....
            }
       };  
   }
}

我希望在 C#中实现相同目标。

1 个答案:

答案 0 :(得分:4)

你不能在C#中做到这一点。如果实现的某些部分是特定于呼叫站点的,则可以使用委托void method2()签名映射到Action(无参数/返回值),因此:

class classB {
    private readonly Action method2;
    public classB(Action method2) {
        if(method2==null) throw new ArgumentNullException("method2");
        this.method2 = method2;
    }
    public void SomeMethod() {
         ... that uses what was method2()
        method2();
    }
}

然后:

classB obj = new classB(() => {
   // statements...
});

使用其他相同的语法:

classB obj = new classB(delegate {
   // statements...
});

或:

classB obj = new classB(delegate() {
   // statements...
});