我是一个DI新手,所以请原谅我,如果这是一个错误的方法或一个愚蠢的问题。我应该如何订购DI/IOC的ctor参数?
比方说,我有一个创建/更新订单的表单,我知道它需要检索要显示的产品和客户列表。我想传递它正在编辑的Order对象,但我也想注入ProductsService和CustomersService作为依赖关系。
所以我会希望我的IoC容器(无论哪一个去)提供服务,但它将由调用代码提供Order对象进行编辑。
我应该声明构造为接受定单对象作为第一个参数,之后的系列技术CustomersService,如:
public OrderForm(Order order, ProductsService prodsSvc, CustomersService custsSvc)
...还是应该依赖于最后来到第一和订单对象,例如:
public OrderForm(ProductsService prodsSvc, CustomersService custsSvc, Order order)
重要吗?它取决于我使用哪个IoC容器?或者,还有更好的方法?
好的,这是有道理的。因此,无论是对所有依赖关系使用属性注入,还是仅将依赖关系传递给ctor,并为“必要”对象引入属性? – 2008-10-01 05:22:15
是的,你是对的。不要混用DP和普通属性,因为它可能导致不可预知的问题,并限制合适的IoC框架的范围。 – aku 2008-10-01 05:27:22