1
1
我能想到的一个原因是约定——许多人将setter注入解释为不需要的依赖项,而将构造函数注入解释为需要的。尽管如此,这只是一个约定,不会阻止我在这个例子中使用自动连线属性。 依赖注入应该简化您的工作(我承认这不是使用DI的最重要原因,但我认为这是一个有效的原因),而不是让它变得更加困难。当您必须添加另一个“全局”服务时,请考虑这种情况。您必须遍历项目中的每个控制器并修改一个构造函数,这真的非常糟糕。 我想出了另一个解决这个问题的方法:创建一个收集器对象,它存储所有的“全局”依赖项,将其传递给具体的控制器,然后传递给基础,基础将获得所需的依赖项。它可以解决添加依赖项的问题,并且您可以清楚地声明,具体的控制器正在向基类传递依赖项。但我不喜欢它,因为当我添加新的“全局”依赖项时,它仍然需要两个类来更改(“依赖项收集器”和BaseController)。 |