0

私は MEF を使用してパーツを構成し、いくつかを取得しますIEnumerable<Lazy<IFoo, IMetaData>>(いくつかのインポートがあります)。構成されたすべてのパーツを type の 1 つのコレクションにマージするのが好き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 に答える