2011-01-30 7 views
2

CompositionContainer.ComposeExportedValueメソッドはオブジェクトを取得し、オブジェクトのエクスポートメソッドを使用可能にしますか?私はこの方法が何をするのか混乱している。私が知っているのは、このメソッドはコンテナでオブジェクトを登録するということです。オブジェクトをコンテナにどのように登録しますか?このメソッドは、オブジェクトのエクスポートメソッド、または他のクラスに対してエクスポート属性を使用できるオブジェクトを妙に作成しますか?CompositionContainer.ComposeExportedValueメソッドは正確に何をしますか?

答えて

4

AFAIK AttributedModelServices.ComposeExportedValue<T>CompositionContainerの拡張メソッドは、指定されたオブジェクトをコントラクトTを満たすパーツとして登録します。これは、オブジェクトが実際にTをインポートする他のオブジェクトを構成するために使用されることを意味します。

  • それはインポート属性を持つ任意のプロパティを設定しようとしません。

    おそらくもっと重要なのは、それがをしないものです。 AttributedModelServices.ComposePartsでそれを行うことができます。

  • オブジェクトの所有権をコンテナに転送することはありません。オブジェクトがIDisposableである場合、コンテナが廃棄されるときには処理されません。です。

通常、これらの方法は避けてください。通常は、クラスに必要な属性を追加し、AssemblyCatalogを使用してコンテナに追加するだけです。

+0

私はservicelocatorを使用していましたが、ComposeExportedValueに切り替えました.2つの結果を返しません...これはバグかどうか – zachary

関連する問題