我想在运行时动态地将 MEF Export 属性应用到类型,就像该类型在编译时应用了 Export 属性一样。

有没有一种简单的方法可以做到这一点?

除此之外,是否有一种复杂的方法可以做到这一点?

有帮助吗?

解决方案

如果您有能力使用 .NET 4.5(这意味着放弃 Windows XP 支持),您现在可以使用 MEF 无属性注册 又名 约定模式.

在 .NET4 或更早的 MEF 预览版本中,不支持开箱即用,但仍然可以通过创建自己的实现来扩展 MEF 出口商 或者 可组合部件目录.

MEF Contrib Fluent 定义提供者 就是这样一个实现,它允许您通过方法调用注册导入和导出。

MEF Contrib 可配置定义提供r 是另一个允许您在 XML 文件中设置导入和导出的工具。

另一种选择是进行注册 奥特法 然后使用它的 MEF集成 使 autofac 组件可供 MEF 使用。

其他提示

我不是100%肯定,但我不认为这是可能的MEF做。一种模式为使用提供类似的行为虽然是工厂/供应商模式。

interface IData {} 

interface IDataProvider {
  IData Data { get; set; }
}

[Export(IDataProvider)]
class DataProvider : IDataProvider {
  public IData { get; set; }
}

您可以使用此模式来动态更新IData的实施,你想使用的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top