C#MEF设置属性/属性注入

时间:2010-11-03 04:52:18

标签: .net-4.0 mef

有没有办法让它使用Microsoft Extensibility Framework(MEF)

让我说我有接口

public interface IApplicationSettings
{
   string SettingOne { get; }
}

实现此接口的类

[Export(typeof(IApplicationSettings))]
public class ApplicationSettings : IApplicationSettings
{ 
   public string SettingOne
   {
       get
       {
           return "AAA";
       }        
    }
}

将我的界面作为属性包含的类

public class IoCConstructorMef
{
    [Import("ApplicationSettings", typeof(IApplicationSettings))]
    public IApplicationSettings ApplicationSettings { get; set; }
}

然后我期待我的财产将在这里注入:

 static void Main(string[] args)
 {
     IoCConstructorMef cm = new IoCConstructorMef();
     //cm.ApplicationSettings - is null

 }

在这种情况下看起来没有注射。

我错过了什么或做错了什么?

2 个答案:

答案 0 :(得分:2)

您必须让CompositionContainer为您创建一个对象才能满足其导入。将ExportAttribute添加到IoCConstructorMef,创建容器,然后致电container.GetExportedValue<IoCConstructorMef>()

答案 1 :(得分:0)

你必须让MEF构建你的IoCConstructorMef cm。否则导入不会发生。