c# - MEF 从预先存在的属性中导出

标签 c# mef

我正在使用 MEF 构建一个插件管理器,理想情况下,我不需要更改任何预先存在的代码来构建它。 要使用的每个类都有(预先存在的)属性 [MyPlugin] - 是否可以使用 RegistrationBuilder 或其他方法基于此属性隐式导出?我无法找到任何关于如何或是否可行的提及,并且最好不要基于界面导出(尽管如果必须的话我会这样做)

提前致谢

最佳答案

这可以通过 RegistrationBuilder 轻松完成 - 只需让谓词只选择具有 MyPlugin 属性的类型即可:

var builder = new RegistrationBuilder();
builder.ForTypesMatching(t => t.IsDefined(typeof(MyPluginAttribute)) &&
                              typeof(IPlugin).IsAssignableFrom(t))
       .Export<IPlugin>();

第一个条件真的很重要 - 第二个条件只是避免异常,以防万一你用 [MyPlugin] 错误地标记了一个没有实现 IPlugin 的类> 属性。

关于c# - MEF 从预先存在的属性中导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38859325/

相关文章:

javascript - document.getElementById ('id' ).value 在 ASP.net javascript 函数中失败

c# - 为什么 InProc session 模式不需要序列化

javascript - 如何在提交表单 post 方法之前将复杂数据类型附加到 View 模型

c# - 如何使用 MEF 初始化 viewModel?

mvvm - 带有 Prism 4 的新 LOB Silverlight 4(mvvm、mef、unity)

c# - MEF 错误,是循环依赖,现在是其他东西

c# - 将字节数组的内容转换为字符串

c# - SqlBulkCopy 在事务内部插入时阻止任何其他对表的写入

c# - MEF 导出中的 ExpandoObject

c# - 使用MEF,如何导出ItemsControl的 View ?