微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用IoC容器时,如何将动态数据/对象传递给类?

我有一个带有以下构造函数的Order类

public Order(IProduct product,short count)
{
this._product = product;
this._count = count;
}

我正在尝试设置Unity IoC容器,显然要构建我需要知道计数和产品的订单对象,但这些是在运行时确定的;计数可以是任何值,产品可以是任何产品,例如胡萝卜,甜瓜等

那么如何应用IoC呢?

我认为一种方法是我的构造函数只接受对象依赖,然后使用新的Initialize()方法添加任何其他必需的属性

public Order (IProduct product)
{
this._product = product;
}

public Initialize(short count)
{
this._count = count;
}

以这种方式创建Order对象的人必须在之后调用Initialize()方法,以便将IoC容器无法处理的其他属性添加到其中.

这是你推荐/使用的方法吗?

解决方法

对我来说,这似乎不适合IoC容器.根据用户的行为,推测订单可以在应用程序的整个生命周期中定期使用不同的产品(和计数)进行实例化,这表明需要为可能创建订单的每个上下文配置容器 – 也就是说,每个产品页面.

IoC容器在您很少和早期就可以在应用程序启动时做出有关依赖关系的决策时效果最佳.如果决定注入哪个依赖项总是在创建依赖对象的同时进行,那么IoC容器只会增加不必要的复杂性.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐