2010-11-03 206 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>()