2013-05-07 30 views
0

我使用MEF和组成部分,并得到几个IEnumerable<Lazy<IFoo, IMetaData>>(我有几个进口)。我喜欢将所有组成部分合并到一个类型为IEnumerable<Lazy<dynamic, IMetaData>>的集合中。这可能没有调用/实例化实现IFoo或其他接口的实际对象?Lazy <T,TMetaData> - > Lazy <dynamic,TMetaData>没有实例化?

我期待设置一个可组合部件的大集合,但我不想在实际请求之前将它们实例化。 (请参阅我的相关问题:MEF, why are identical duplicates of one and the same exported plugin created?

回答

1

你应该能够做到这一点,通过使用类似:

from enumerable in enumerables 
from lazy in enumerable 
select new Lazy<dynamic, IMetaData>(() => lazy.Value, lazy.Metadata) 

不幸的是我没有MEF手头所以请让我知道你是否有任何编译的问题。需要注意的是lazy.Value在委托传递,因此不计算,直到需要。

+0

谢谢您的回答,它解决了我的问题,虽然我结束了访问包括直接出口部分的容器,因此我没有一起工作动态,使解决方案强类型。非常感谢 – 2013-05-08 06:40:50

相关问题