我基本上有一个类,它有一个工厂方法,它接受我们拥有的Product类型,并返回一个特别能够处理该产品的IProfileService实现。如果我想使用MEF以便我可以在另一个DLL中实现IProfileService的不同实现,这些DLL只会在安装特定产品时安装,那么这将是一个好方法吗?
我首先想到的是一个带有MetaData的ImportMany来描述它处理的产品,然后在我的工厂方法中使用LINQ查询来比较传入的产品和MetaData。这听起来不错还是有更好的方法?
答案 0 :(得分:2)
我认为这种做法会很好。我想不出另一种会更好的方式。
可以与此方法一起使用的技术是延迟加载。请参阅MEF上的this great article。通过在导出中使用Lazy<T>
,在您需要之前不会创建IProfileService对象。