我是一个 DI 新手,所以如果这是错误的方法或一个愚蠢的问题,请原谅我。
假设我有一个创建/更新订单的表单,并且我知道它将需要检索要显示的产品和客户列表。我想传递它正在编辑的 Order 对象,但我还想注入 ProductsService 和 CustomersService 作为依赖项。
因此,我希望我的 IoC 容器(无论我使用哪一个)来提供服务,但将由调用代码来提供要编辑的 Order 对象。
我是否应该将构造函数声明为将 Order 对象作为第一个参数,然后是 ProductsService 和 CustomersService,例如:
public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)
...或者应该依赖项先出现而 Order 对象最后出现,例如:
public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)
有关系吗?这取决于我使用哪个 IoC 容器吗?或者,还有更好的方法?
马特,你不应该将普通参数与依赖项混合在一起。由于您的对象将在 IoC 容器的内部创建,因此您将如何指定必要的参数?
混合依赖和普通参数将使程序的逻辑更加复杂。
在这种情况下,最好声明依赖属性(即从构造函数中删除依赖项)或初始化orderIoC构建后的字段订单并解决了它的依赖关系(即从构造函数中删除正常参数)。
您还可以声明所有参数,包括order作为依赖项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)