5

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

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

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

4

2 回答 2

7

如果您负担得起使用 .NET 4.5(这意味着放弃 Windows XP 支持),您现在可以使用 MEF 的无属性注册,即约定模型

在 .NET4 或更早的 MEF 预览版中,不支持开箱即用,但仍可以通过创建自己的ExportProviderComposablePartCatalog实现来扩展 MEF 。

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

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

另一种选择是使用Autofac进行注册,然后使用其MEF 集成使 autofac 组件可用于 MEF。

于 2010-11-18T09:35:22.623 回答
1

我不是 100% 确定,但我认为这与 MEF 无关。一种用于提供类似行为的模式是工厂/提供者模式。

interface IData {} 

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

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

您可以使用此模式将实现动态更新为IData您想要使用的值。

于 2010-11-17T22:09:37.673 回答