有没有办法在几个类中使用具有相同名称的继承方法,但没有强制转换?
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());
}
}
答案 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。