我在使用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);
}
前两种方式有什么不好?
答案 0 :(得分:2)
IPartImportsSatisfiedNotification
醇>
答案 1 :(得分:1)
第一种方法不起作用,因为在调用构造函数时,EventAgg依赖项仍然为null。
只要您的视图模型实现OnImportsSatisfied
接口,IPartImportsSatisfiedNotification
的第二种方法就可以正常工作。