3

コンポジション バッチ クラスの AddPart() と AddExport() の違いは何ですか? いつどちらを使用するのですか?

4

1 に答える 1

3

私は同じことについて疑問に思っていましたが、残念ながら、AddPart、AddExport、およびAddExportedValueの違いを簡潔に説明しているドキュメントを見つけることができませんでした。これが私がこれまでに学んだことです:

MEF用語の一部は、機能(別名エクスポート)を提供し、依存関係(別名インポート)を指定するコンポーネントです。

したがって、電話をかけると、「何か」はエクスポートを提供する可能性があり、1つ以上のインポートbatch.AddPart(something)に依存するコンポーネントであるとMEFに伝えています。 呼び出すと、「何か」はインポートを必要とせずにエクスポートを提供するコンポーネントであるとMEFに伝えます。つまり、MEFは「何か」クラスで指定された注釈を無視します。
batch.AddExport(new Export("someExport", () => something))[Import]

内部的には、AddExportは実際にはAddPartを呼び出しますが、その前に、渡されたオブジェクトを「SingleExportComposablePart」でラップします。つまり、ComposablePartはIEnumerable<ImportDefinition>への呼び出しで空を返しComposablePart.ImportDefinitionsます。

于 2012-07-17T12:48:58.360 に答える