The*_*ght 3 c# asp.net ioc-container inversion-of-control unity-container
我有一个带有以下构造函数的Order类
public Order(IProduct product, short count)
{
this._product = product;
this._count = count;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置Unity IoC容器,显然要构建我需要知道计数和产品的订单对象,但这些是在运行时确定的; 计数可以是任何价值,产品可以是任何产品,例如胡萝卜,甜瓜等.
那么如何应用IoC呢?
我认为一种方法是我的构造函数只接受对象依赖,然后使用新的Initialize()方法添加任何其他必需的属性:
public Order (IProduct product)
{
this._product = product;
}
public Initialize(short count)
{
this._count = count;
}
Run Code Online (Sandbox Code Playgroud)
以这种方式创建Order对象的人必须在之后调用Initialize()方法,以便将IoC容器无法处理的其他属性添加到其中.
这是你推荐/使用的方法吗?
对我来说,这似乎不适合IoC容器.根据用户的行为,推测订单可以在应用程序的整个生命周期中定期使用不同的产品(和计数)进行实例化,这表明需要为可能创建订单的每个上下文配置容器 - 也就是说,每个产品页面.
IoC容器在您很少和早期就可以在应用程序启动时做出有关依赖关系的决策时效果最佳.如果决定注入哪个依赖项总是在创建依赖对象的同时进行,那么IoC容器只会增加不必要的复杂性.
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |