【发布时间】:2014-11-17 19:06:09
【问题描述】:
我正在尝试使用 Ninject 作为 Windows 服务的 IoC 框架。 我有以下类和接口:
组装核心:
public class Orchestrator : IOrchestrator
{
...
public Orchestrator(ITerminal terminal)
{
...
}
...
}
组装 Vx520:
public class Vx520 : ITerminal
{
...
public Vx520(string comPort, int bauds, int dataBits, Parity parity, StopBits stopBits)
{
...
}
...
}
组装 Vx580:
public class Vx580 : ITerminal
{
...
public Vx580(string ip, int port)
{
...
}
...
}
我的想法是使用ConfigurationSection 让用户配置他想要的终端和数量。例如,在下面的配置中,我应该得到 3 个 Orcestrator 实例,一个带有 Vx520 终端,另外两个带有 Vx580,每个都有它的自定义配置:
<Terminals>
<add Type="Vx520" ComPort="COM3" Bauds="9600" DataBits="8" Parity="None" StopBits="One" />
<add Type="Vx580" Ip="192.168.0.50" Port="33999"/>
<add Type="Vx580" Ip="192.168.0.51" Port="33999"/>
</Terminals>
我的配置部分正在工作,IEnumerable<TerminalConfiguration> 作为最终输出。
有没有办法使用此配置列表动态解决 Orchestrator 类的依赖关系?
如果 Ninject 无法做到这一点,是否有其他 IoC 框架可以推荐给我?
提前谢谢你
【问题讨论】:
-
你想将哪一个注入到
Orchestrator?你是根据什么做出决定的? -
@YuvalItzchakov 基于
TerminalConfiguration的列表。假设我在该列表中有 3 个项目,那么我想要 3 个Orchestrator每个项目都有一个基于配置的Type字段的终端
标签: c# ninject ioc-container