【发布时间】:2013-08-22 00:30:38
【问题描述】:
我想要实现的目标:让 Unity 从配置文件加载映射,然后在源代码中解析从所述配置文件加载的类型
App.Config
<register type="NameSpace.ITill, ExampleTightCoupled" mapTo="NameSpace.Till, NameSpace" />
<register type="NameSpace.IAnalyticLogs, NameSpace" mapTo="NameSpace.AnalyticLogs, NameSpace" />
代码
IUnityContainer container;
container = new UnityContainer();
// Read interface->type mappings from app.config
container.LoadConfiguration();
// Resolve ILogger - this works
ILogger obj = container.Resolve<ILogger>();
// Resolve IBus - this fails
IBus = container.Resolve<IBus>();
问题:有时 IBus 会在 App.config 中定义,有时它不存在。当我尝试解析一个接口/类但它不存在时,我得到一个异常。
有人可以在这里教育我吗?
谢谢, 安德鲁
【问题讨论】:
-
一起防止出现这种情况。如果
IBus是可选依赖项,则创建并注册Null Object Pattern 实现(实际上是无操作的空实现)。这可以防止您使应用程序逻辑复杂化。
标签: c# dependency-injection unity-container