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容器只会增加不必要的复杂性.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...