我正在为我的插件系统使用MEF (C# 4.0)。有时需要获取所有插件的派生类型列表(主要用于 XML 反序列化)。这可以在不实例化插件的情况下完成吗?
这有效,但需要实例化:
var cat = new DirectoryCatalog(path, "*.dll");
var container = new CompositionContainer(cat);
container.ComposeParts(this);
foreach (var plugin in Plugins)
{
// Would be better if this could be done via Metadata!
DoStuff(plugin.Value.GetType());
}
// ...
[ImportMany]
public Lazy<PluginBase, IPluginMetadata>[] Plugins
{
get;
private set;
}
问:是否有可能通过一些ExportAttribute
或其他技术来实现这一点?
谢谢。