我想在我定義的類中獲取導出的屬性,但我認爲某些東西是我不知道的。這裏是我的處理程序類:C#:MEF導出屬性
public class Handler
{
public string Message { get; private set; }
public void Create(string msg)
{
Message = msg;
}
}
我HandlerUser類是:
public class HandlerUser
{
[Export(typeof(Handler))]
public Handler MyHandler { get; set; }
public string Name { get; set; }
public HandlerUser() { MyHandler = new Handler(); }
}
在我的Program.cs我:
var catalogs = new AggregateCatalog();
var catalog = new ApplicationCatalog();
catalogs.Catalogs.Add(catalog);
CompositionContainer pluginsCompositionContainer = new CompositionContainer(catalogs);
HandlerUser u1 = new HandlerUser();
u1.MyHandler.Create("U1");
HandlerUser u2 = new HandlerUser();
u2.MyHandler.Create("U2");
var exports = pluginsCompositionContainer.GetExports<Handler>();
Console.Write(exports.Count());
我希望看到2個出口,他們應該有「U1」,「U2」作爲他們的消息,但是我只看到一個,並且消息是空的。我無法弄清楚缺少什麼,我簡單地想要在代碼中做出每個Handler
的導出,並且能夠做一些邏輯。任何幫助都會很棒。
你有沒有得到它的工作? –
感謝您的回答,但該解決方案正是我用於'導出'當前的MEF類。把'Handle'類看作一個錯誤收集機制。我在MEF導出項目中創建'Handle'類的實例,因此除了獲取對MEF導出類的引用外,我想要一個ErrorManager來收集所有導出的錯誤日誌。換句話說,我在'HandlerUser'類中導出了兩種不同類型的信息。一個是實際實現的原始輸出,另一個是Handler類的其他實例。 – aminjam