当前位置:  开发笔记 > 运维 > 正文

我该如何订购DI/IOC的ctor参数?

如何解决《我该如何订购DI/IOC的ctor参数?》经验,为你挑选了1个好方法。

我是一个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容器吗?或者,还有更好的方法?



1> aku..:

马特,你不应该将正常参数与依赖性混合在一起.由于您的对象将在IoC容器的内部创建,您如何指定必要的参数?

混合依赖和普通参数会使程序的逻辑变得更复杂.

在这种情况下,最好在IoC构造OrderForm之后声明依赖项属性(即从构造函数中删除依赖项)或初始化order字段并解析它的依赖项(即从构造函数中删除常规参数).

您还可以声明所有参数,包括作为依赖项的顺序.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有