MEF从已有属性导出
本文关键字:属性 MEF | 更新日期: 2023-09-27 18:01:28
我正在使用MEF构建一个插件管理器,理想情况下,我不需要更改任何预先存在的代码来构建它。每个要使用的类都有(预先存在的)属性[MyPlugin] -是否有可能使用RegistrationBuilder或其他方法基于此属性隐式导出?我没有找到任何关于如何或是否可行的提及,并且最好不要基于界面导出(尽管如果我必须这样做的话,我会这样做)
Thanks in advance
这可以很容易地用RegistrationBuilder
完成-只需使用谓词只选择具有MyPlugin
属性的类型:
var builder = new RegistrationBuilder();
builder.ForTypesMatching(t => t.IsDefined(typeof(MyPluginAttribute)) &&
typeof(IPlugin).IsAssignableFrom(t))
.Export<IPlugin>();
第一个条件是真正重要的-第二个只是避免异常,以防你错误地标记了一个类,不实现IPlugin
与[MyPlugin]
属性。