以下を検討してください。
public class DependencyA {}
public class DependencyB {}
public class DependencyC {}
public class DependencyD {}
public class Service1
{
public Service1(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
public class Service2
{
public Service2(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
public class Service3
{
public Service3(DependencyA a, DependencyB b, DependencyC c, DependencyD d) { ... }
}
私のサービスの多くが複数の共通コンポーネントに依存していることに気づき、Service コンストラクターでのコードの繰り返しを節約するために、以下のようなキャッチオール ソリューション (すべて Windsor 経由で配線) を実装することを考えています。
public class DependencyContainer
{
public DependencyA A { get; set; }
public DependencyB B { get; set; }
public DependencyC C { get; set; }
public DependencyD D { get; set; }
}
public class Service1
{
public Service1 (DependencyContainer container) { ... }
}
または、ServiceBase クラスを作成することもできます。
public class ServiceBase
{
public DependancyA A { get; set; }
public DependancyB B { get; set; }
public DependancyC C { get; set; }
public DependancyD D { get; set; }
}
public class Service1 : ServiceBase {}
本当の問題は、これがサービスのより広い設計上の問題を浮き彫りにしているのかということです。
おそらく私は DI を使いすぎているのかもしれませんが、これらはすべて本物の依存関係です。
もしそうなら、どうすればこれを回避できますか?そうでない場合、提案されたソリューションはこの目標を達成するための有効な方法ですか?