大量のコード セットがあるため、各クラスの形式は次のとおりです。
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
的です。struct
Temp
問題は、これらのクラスごとに , があるinit
ためconstructor
、たとえば init で、クラス名に固有のことを行っていることです。つまり、A はオフになり、各クラスに固有のことを行います。
これは大規模なコード セットであるため、リファクタリングはできません。これらを組み合わせたいのでC
、基本的にそれぞれの機能を実行するか、何らかの方法でそれらをマージする 1 つのクラスを呼び出します。クラス DPM を変更することはできません。これは、多数の where 句を含む複雑な構造です。
次のようになります。
public abstract class DPM<TypeA, TypeB, TypeC, , ... > : ID
ここで、ID はインターフェイスです。
この問題の例として、class DPM
継承された には と呼ばれるプロパティがあり、それが から呼び出されたかどうかに応じて_xyz
、 に異なる値が取り込まれます。そして、下流の依存関係がわからないため、コードの後半で呼び出されたり使用されたりします。.init()
Class A
Class B
どんな提案も大歓迎です。