コンストラクターの依存関係を介して注入されたサービスを含む基本クラスがある場合: を使用せずにサブクラスのコンストラクターを宣言することは可能: base (params)
ですか?
public MyBaseClass
{
private IServiceA _serviceA;
private IServiceB _serviceB;
private IServiceC _serviceC;
public MyBaseClass(null, null, null)
public MyBaseClass(IServiceA serviceA, IServiceB serviceB, IServiceC serviceC)
{
_serviceA = serviceA;
_serviceB = serviceB;
_serviceC = serviceC;
}
}
そして、いくつかの追加の依存関係が注入されたサブクラス:
public MySubClassA : MyBaseClass
{
private IServiceD _serviceD;
public MySubClassA (null, null, null, null)
public MySubClassA (IServiceA serviceA, IServiceB serviceB,
IServiceC serviceC, IServiceD serviceD)
: base (serviceA, serviceB, serviceC)
{
_serviceD = serviceD;
}
}
ここでの問題は、複数のサブクラスがあることです。現在は 10 程度しかありませんが、その数は増えるでしょう。基本クラスに別の依存関係を追加する必要があるたびに、すべてのサブクラスを調べて、そこにも手動で依存関係を追加する必要があります。この手作業は、私のデザインに何か問題があると思わせます。
MyBaseClassA
サブクラスのコンストラクターで基本クラスが必要とするサービスを持たずにコンストラクターを宣言することは可能ですか? たとえば、 のコンストラクター MyBaseClassA
がこのはるかに単純なコードのみを持つようにします。
public MySubClassA (null)
public MySubClassA (IServiceD serviceD)
{
_serviceD = serviceD;
}
依存性注入がそこで発生し、サブクラスにも追加する必要がないように、基本クラスで何を変更する必要がありますか? LightInject IoC を使用しています。