繁体   English   中英

MEF导入问题

[英]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);
    }

前两种方式有什么坏处?

  1. 您不能在私有财产上使用财产(设定者)注入
  2. 如果希望MEF自动调用OnImportsSatisfied, IPartImportsSatisfiedNotification在ViewModel上实现IPartImportsSatisfiedNotification

第一种方法将不起作用,因为到构造函数被调用时,EventAgg依赖项仍为null。

只要您的视图模型实现了IPartImportsSatisfiedNotification接口,第二种OnImportsSatisfied方法OnImportsSatisfied应该起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM