C#では、複数のインターフェイスの継承のみを行うことができます。これらのサードパーティクラスでできる最善のことは、それぞれのインスタンスをカプセル化し、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
は、新しいクラスにもそれらを実装することをお勧めします。
しかし、結局のところ、C#には複数の実装継承がありません。そのようなものが必要な場合(これはまれです)、C#は適切な言語ではありません。これはCLRの制限であり、特にC#の制限ではないため、他のCLR言語も同様です。