我在使用 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);
}
前两种方式有什么不好?