2013-05-07 26 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

相關問題