我使用MEF并撰写部分并获得多个IEnumerable<Lazy<IFoo, IMetaData>>
(我有几个导入)。我喜欢将所有组成的部分合并到一个类型为IEnumerable<Lazy<dynamic, IMetaData>>
的集合中。如果没有调用/实例化实现IFoo或其他接口的实际对象,这是否可能?
我希望设置一个可组合部分的大集合,但我不想在实际请求之前实例化它们。 (请参阅我的相关问题:MEF, why are identical duplicates of one and the same exported plugin created?
答案 0 :(得分:1)
您应该可以通过使用以下内容来实现:
from enumerable in enumerables
from lazy in enumerable
select new Lazy<dynamic, IMetaData>(() => lazy.Value, lazy.Metadata)
不幸的是我手头没有MEF所以如果您有任何编译问题请告诉我。请注意,lazy.Value
在委托中传递,因此在需要之前不会进行评估。