依赖注入UserControl
问题描述:
我正在使用C#6.0,WPF 4.5.2和PRISM-architecture 6.2.x(Unity)。我使用的是从Canvas派生的类。依赖注入UserControl
所以,有一类MyCanvas,其在用户控件(XAML)使用方式:
<Usercontrol [...]>
<mycontrols:MyCanvas [...] />
</Usercontrol>
这工作得很好,但我需要做的,就是注入Eventaggregator到MyCanvas类的实现。
XAML似乎只调用静态构造函数,但我需要存储对Eventaggator的引用。
我该怎么做?
在此先感谢。
答
尝试使用服务定位器。
var eventAgg = ServiceLocator.Current.GetInstance<IEventAggregator>();
如果无法在构造函数中注入依赖项,可以使用ServiceLocator模式(或反模式?)。 – 3615
事实上,你可以使用ServiceLocator,但也许你应该考虑使用DataContext和viewmodels来进行注入。这里有一个相关的问题可以帮助:http://stackoverflow.com/questions/25366291/how-to-handle-dependency-injection-in-a-wpf-mvvm-application – LeBaptiste
感谢您的帮助家伙!但是使用ServiceLocator时,问题仍然存在 - 我如何在没有DI的情况下使用ServiceLocator?我想用DI。我的理解是,每当有问题出现时,就会变得模糊不清。因为如果我这样做了,我根本不会使用任何模式,这意味着我没有任何改进。 – Elex