0

大量のコード セットがあるため、各クラスの形式は次のとおりです。

public class A :
        DPM<Time, Data, TypeAKindA,
            TypeAKindB, TypeAKindC,
            TypeAKindC, TypeAkindD, TypeAKindE>

public class B:
        DPM<Temp, Data, TypeBKindA,
            TypeBKindB, TypeBKindB,
            TypeBKindC, TypeBKindD, TypeBKindE>

とは異なり、たとえば具体Time的です。structTemp

問題は、これらのクラスごとに , があるinitためconstructor、たとえば init で、クラス名に固有のことを行っていることです。つまり、A はオフになり、各クラスに固有のことを行います。

これは大規模なコード セットであるため、リファクタリングはできません。これらを組み合わせたいのでC、基本的にそれぞれの機能を実行するか、何らかの方法でそれらをマージする 1 つのクラスを呼び出します。クラス DPM を変更することはできません。これは、多数の where 句を含む複雑な構造です。

次のようになります。

public abstract class DPM<TypeA, TypeB, TypeC, , ... > : ID

ここで、ID はインターフェイスです。

この問題の例として、class DPM継承された には と呼ばれるプロパティがあり、それが から呼び出されたかどうかに応じて_xyz、 に異なる値が取り込まれます。そして、下流の依存関係がわからないため、コードの後半で呼び出されたり使用されたりします。.init()Class AClass B

どんな提案も大歓迎です。

4

1 に答える 1