我想在我定义的类中获取导出的属性,但我认为某些东西是我不知道的。这里是我的处理程序类: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