[英]Problem with MEF import
我在使用MEF将视图模型类中的接口导入类时遇到问题。
我查看创建属性的模型:
[Import]
private IEventAggregator EventAgg { get; set; }
我想在视图模型的构造函数中订阅此事件聚合器:
所以我尝试这样:
public MessengerViewModel()
{
EventAgg.Subscribe(this);
}
我运行应用程序但应用程序冻结。
因此,我尝试在OnImportsSatisfied方法中订阅事件聚合器:
public void OnImportsSatisfied()
{
EventAgg.Subscribe(this);
}
但是,当创建视图模型类时,永远不会调用此方法。
唯一可行的解决方案是:
[ImportingConstructor]
public MessengerViewModel(IEventAggregator eventAggregator)
{
EventAgg = eventAggregator;
EventAgg.Subscribe(this);
}
前两种方式有什么坏处?
IPartImportsSatisfiedNotification
在ViewModel上实现IPartImportsSatisfiedNotification
。 第一种方法将不起作用,因为到构造函数被调用时,EventAgg依赖项仍为null。
只要您的视图模型实现了IPartImportsSatisfiedNotification
接口,第二种OnImportsSatisfied
方法OnImportsSatisfied
应该起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.