public interface IA
{
void DoSomething();
void Calculate();
}
public interface IB
{
void DoSomethingElse();
void Calculate();
}
public class A : IA
{
void DoSomething() { }
void Calculate() {}
}
public class B : IB
{
void DoSomethingElse() { }
void Calculate() {}
}
public class C : IA, IB
{
//How can I implement Calculate() in class B and DoSomething() in class A?
}
如何避免C类中的重复代码。参考:How to simulate multiple inheritance in C#。我不想在C级再次编写完整的方法。感谢您的帮助。
答案 0 :(得分:1)
请注意,您根本没有实现多重继承。 C#具有单一的继承性。您正在实现多个接口。
绝对没有理由不能在类A
和B
中实现接口,然后从B
导出A
并导出C
来自接口的方法实现甚至可以是抽象的,这迫使子类执行实现。如果您使用此方法,则只需投放或使用C
关键字,您仍可以IA
或IB
传递as
。
你也可以让接口IB
“继承” 1 (工具)IA
,这意味着任何实现IB
的东西也必须实现IA
}。
1 当IB
派生自IA
时,它不是类似于类级别的继承,它实际上是仍然实现。所以IB
实现 IA
,它不会继承它。
答案 1 :(得分:1)
假设IA.Calculate()
与IB.Calculate()
不同,因此您不能仅从IB
继承IA
,您可以在{{1}中实现这两个接口通过委托C
和A
的私有实例执行:
B