2010-11-03 137 views
1

有什么办法得到它的工作使用Microsoft扩展性框架(MEF)C#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 

} 

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

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

回答

0

您必须让MEF构建您的IoCConstructorMef cm。否则进口不会发生。

2

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