一尘不染

如何避免依赖注入构造函数的疯狂?

c#

我发现我的构造函数开始看起来像这样:

public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... )

不断增加的参数列表。由于“容器”是我的依赖项注入容器,所以为什么我不能这样做:

public MyClass(Container con)

每堂课?不利之处是什么?如果执行此操作,则感觉就像我在使用精美的静态方法。请分享您对IoC和依赖注入疯狂的想法。


阅读 256

收藏
2020-05-19

共1个答案

一尘不染

没错,如果您将容器用作服务定位器,则它或多或少是光荣的静态工厂。由于种种原因,我认为这是一种反模式

构造函数注入的奇妙好处之一是,它使违反单一责任原则的行为显而易见。

发生这种情况时,就该重构为Facade
Services了
。简而言之,创建一个新的,更
粗粒度的 接口,以隐藏您当前需要的一些或所有细粒度依赖项之间的交互。

2020-05-19