1

ダイナミクスをサポートして拡張する必要がある C# クラスの多重継承をシミュレートする最善の方法についてアドバイスが必要です。

クラス MainClass は DLR に依存する必要はありません。そのすべてのプロパティとメソッドは静的にコンパイルされます。オーバーロードされた演算子がたくさんあります。これは一種の DSL です。

ExtendedClass は基本的に、C# ダイナミクスをサポートする MainClass です。たとえば、すべての MainClass 機能に加えて、DynamicObject の TryGetMember/TryInvokeMember をオーバーロードする必要があるため、クライアントは実行時に評価される拡張プロパティでそれを使用できます。

ここで、DynamicObject がインターフェイスではなくクラスであるという問題が発生します。したがって、ExtendedClass は DynamicObject からのみ派生する必要があります。つまり、基本的にすべての MainClass 機能を複製する必要があります。

これは珍しい状況ではないと思います (2 つの類似したクラス、1 つは何らかのシステム クラスから派生する必要があるため、別のクラスから継承して機能を再利用することは不可能です)。この状況に対処するための簡単な方法よりもスマートな方法はありますか? MainClass をメンバー フィールドとして ExtendedClass に追加し、そのすべてのメソッド/プロパティを複製して、含まれている MainClass のインスタンスに単純に転送しますか?

4

1 に答える 1