Possible Duplicate:
Multiple Inheritance in C#
我知道 C# 不支持类中的多重继承。
但是,我需要在 MyClass 中添加 ClassA 和 ClassB 的特性:
public class ClassA
{
/* Third party class*/
}
public class ClassB
{
/* Third party class*/
}
public class MyClass : ClassA, ClassB
{
/*Compilation error*/
}
有什么办法可以实现吗?
您只能在 C# 中拥有多个接口(interface) 继承。您可以对这些第三方类做的最好的事情是在 MyClass
中封装每个类的实例并重新创建每个函数调用并将其传递给适当的实例。
public class MyClass
{
ClassA a = new ClassA();
ClassB b = new ClassB();
void AMethod()
{
a.AMethod();
}
int BMethod(int value)
{
return b.BMethod(value);
}
}
如果您需要能够在需要 ClassA
的位置使用此类,那么您可以添加转换运算符以将其转换回 ClassA
或 ClassB
。您需要仔细考虑此时是返回这些实例的新实例还是公开您的内部实例更合适。
显然,如果 ClassA
或 ClassB
确实 实现了任何接口(interface),我建议您在新类中也实现这些接口(interface)。
但是,归根结底,C# 没有多重实现继承。如果您需要(这种情况很少见),那么 C# 不是合适的语言。任何其他 CLR 语言也不是,因为这是 CLR 限制,而不是特定的 C# 限制。