有没有办法在几个类中使用具有相同名称的继承方法?

时间:2013-06-05 21:39:27

标签: c# inheritance

有没有办法在几个类中使用具有相同名称的继承方法,但没有强制转换?

public class A {
     someMethod(A a) {}
}
public class B {
     someMethod(B b) {}
}
public class Client : A, B {
     public Client() {
          someMethod(new A());
          someMethod(new B());
     }
}

3 个答案:

答案 0 :(得分:3)

没有。在您描述时执行此操作称为多重继承。在没有继承的情况下对方法的子集执行相同的操作称为mixin。这也不是c#的特色,对不起。

答案 1 :(得分:2)

您可以通过明确的界面实现和组合来实现这一目标:

public interface IA {
     someMethod(A a) {}
}
public interface IB {
     someMethod(A a) {}
}
public class A : IA {
    someMethod(B b) {}
}
public class B : IB {
    someMethod(B b) {}
}
public class Client : IA, IB {
    public Client() {
        ((IA)this).someMethod(new A());
        ((IB)this).someMethod(new B());
     }
     IA.someMethod(new A());
     IB.someMethod(new B());
}

答案 2 :(得分:0)

这种事情有一些非语言工具。查看PostSharp