我试图设计一个框架,其中一个类将继承另外两个类,这是一个错误的错误;忘记了C#没有多重继承。由于这个错误,我做了一个解决方法。
答:B
两者:A //现在拥有A和B的所有成员,除非它们被隐藏
如果A和B都有一个同名的成员,我可以在不更改框架的情况下访问B的成员(由A隐藏),如果是,那么如何?
编辑:A类和B类不是要实例化的。
答案 0 :(得分:6)
您可以采取的一种方法是将方法提取到一对接口中,并在A,B类中使用显式接口实现。
interface IA {
void Method();
}
interface IB {
void Method();
}
abstract class B : IB {
void IB.Method() { ... }
}
abstract class A : B, IA {
void IA.Method() { ... }
}
class Both : A { ... }
然后必须转换为接口以访问方法,并且尝试在没有强制转换的情况下调用Method会导致编译时错误。
Both x = new Both();
((IA)x).Method();
((IB)x).Method();
x.Method() //invalid call
答案 1 :(得分:2)
C c = new C();
c.Member("This is C's version, if there is one; otherwise it's A's");
((A)c).Member("This is A's version");
((B)c).Member("This is B's version");