0

我使用 MEF 并组成部分并获得几个IEnumerable<Lazy<IFoo, IMetaData>>(我有几个进口)。我喜欢将所有组成部分合并到一个 type 集合中IEnumerable<Lazy<dynamic, IMetaData>>。如果不调用/实例化实现 IFoo 或其他接口的实际对象,这是否可能?

我希望设置大量可组合部件,但在实际请求它们之前我不喜欢实例化它们。(请参阅我的相关问题:MEF,为什么会创建一个相同的导出插件的相同副本?

4

1 回答 1

1

你应该可以通过使用类似的东西来做到这一点:

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

不幸的是,我手头没有 MEF,所以如果您有任何编译问题,请告诉我。请注意,这lazy.Value是在委托中传递的,因此在需要时才进行评估。

于 2013-05-08T04:54:12.943 回答