【发布时间】:2015-06-16 09:52:00
【问题描述】:
作为参考,我有一个服务,我想在统一容器中注册为单例。我希望该服务通过属性或构造函数注入以某种方式将 IEventAggerator 注入到服务中。
public class BeckhoffService: IProgrammableLogicController
{ ...}
我要么想要这个:
[Dependency]
public IEventAggregator eventAggregator{get;set;}
或在构造函数中:
BeckhoffService(IEventAggregator eventAggregator)
当我在统一容器中将此服务注册为单例时,我的问题就出现了。
在我的模块初始化中,这些是我尝试过的选项:
IProgrammableLogicController controllerSingleton = new BeckhoffService();
_container.RegisterInstance<IProgrammableLogicController>(controllerSingleton);
以上内容正确注册为单例,但“controllerSingleton”中的依赖项没有得到解析。
_container.RegisterInstance<IProgrammableLogicController>(new BeckhoffService());
上面解决了“new BeckhoffService()”中的依赖,但是容器在解决的时候没有返回单例实例。
我可以通过手动将 IEventAggregator 传递给 Beckhoff 服务来实现它,而无需将 Unity Container 直接注入到服务中,但这似乎有点难看:
IProgrammableLogicController controllerSingleton = new BeckhoffService(_container.Resolve<IEventAggregator>());
_container.RegisterInstance<IProgrammableLogicController>(controllerSingleton);
有没有更好或更喜欢的方式来完成我想要的?谢谢!
【问题讨论】:
标签: c# wpf dependency-injection unity-container prism