1

我基本上有一个类,它有一个工厂方法,它接受我们拥有的一种 Product 并返回一个专门能够处理该产品的 IProfileService 的实现。如果我想使用 MEF,以便我可以在另一个 DLL 中实现 IProfileService 的不同实现,只有在安装该特定产品时才会安装,什么是一个好方法?

我的第一个想法是使用 MetaData 的 ImportMany 来描述它处理的产品,然后在我的工厂方法中使用 LINQ 查询将传入的产品与 MetaData 进行比较。这听起来不错还是有更好的方法?

4

1 回答 1

2

我认为这种方法会很好用。我想不出其他更好的方法。

可以与这种方法一起使用的一种技术是延迟加载。请参阅这篇关于 MEF 的精彩文章。通过Lazy<T>在您的导出中使用,您的 IProfileService 对象在您需要它们之前不会被创建。

于 2012-10-18T14:55:01.993 回答