加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – 我应该如何为DI / IOC订购我的ctor参数?

发布时间:2020-12-13 20:45:16 所属栏目:百科 来源:网络整理
导读:我是一个DI新手,所以请原谅我,如果这是一个错误的方法或一个愚蠢的问题. 假设我有一个创建/更新订单的表单,我知道它需要检索要显示的产品和客户列表.我想传递它正在编辑的Order对象,但我也想将ProductsService和CustomersService作为依赖项注入. 因此,我希望
我是一个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容器吗?或者,还有更好的方法?

我不同意@ aku的回答.

我认为你正在做的事情很好,而且还有其他方法可以做到这一点,或多或少是正确的.例如,人们可能会质疑这个对象是否应该首先取决于服务.

无论DI如何,我觉得在你的脑海中至少澄清每个对象所持有的状态是有帮助的,例如真实状态(Order),派生状态(如果有的话)和依赖(服务):

http://tech.puredanger.com/2007/09/18/spelunking/

在任何构造函数或方法上,我更喜欢首先传递真实数据,最后传递依赖关系或外部东西.所以在你的例子中,我更喜欢第一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读