如何使用MEF通过合同名称导出/导入属性值?

时间:2020-09-28 13:08:52

标签: c# mef

在我的WPF应用程序中,我希望将“宠物”类型的列表传递给另一个需要访问它的类。我正在使用MEF作为一种手段。在Class_A中,我将其设置为:

using System.ComponentModel.Composition;

public class Class_A : ViewModelBase 
{
   public ObservableCollection<Pet> Pets { get; set; }

   public Class_A()
   {
     // populate the Pets list
   }
   
   [Export("PetList")]
   public ObservableCollection<Pet> GetListOfPets
   {
         get
         {
             return Pets;
         }
   }
}

在Class_B中,我试图通过导入“ PetList”合同名称来获取“宠物”列表:

using System.ComponentModel.Composition;

public class Class_B : ViewModelBase
{
   [Import("PetList")]
   public ObservableCollection<Pet> Pets { get; set; }

   public Class_B ()
   {
    
   }
  
   private void SomeFunctionThatGetsCalled()
   {
      if (Pets.Count > 0) //Pets is null
      {
        
      }
   }
}

但是当我调试代码时,我发现Class_B中的Pets列表为空。我尝试按照此site中的教程进行操作,该教程帮助我在应用程序中尝试了MEF,但无法将列表加载到Class_B中。有人可以帮助我了解为什么我的方法无效吗?预先非常感谢。

0 个答案:

没有答案
相关问题