1

MEF を静的な CompositionContainer と共に使用しています。私のクラスはこのコンテナを次のように使用します。

public void SomeClass
{
    [Import(typeof(AnotherClass)]
    private AnotherClass Instance {get;set;}

    public SomeClass()
    {
        MEFContext.RegisterAttributedPart(this); // this basically calls CompositionContainer.ComposeParts(this);
    }
}

ここでの問題は、CompositionContainer がインスタンスを保持しているため、SomeClass のインスタンスが解放されないことです。このインスタンスを解放するにはどうすればよいですか?

追加情報:

  • AnotherClass には、CreationPolicy.Shared を持つ PartCreationPolicy があります。
4

2 に答える 2

0

.NET 4 では、使用されている MEF の実装が子コンテナーとフィルター処理されたカタログをサポートしていないようです。新しいコンテナーを作成し、必要なアイテムのみを含むカタログを使用することで、上記の問題を解決しました。このコンテナは、不要になった時点で破棄されます。.NET 4.5 では、これは子コンテナーで解決できます。

于 2012-12-06T10:36:08.417 に答える
0

CompositionContainerは IDisposable を実装します。Dispose を呼び出すか、CompositionContainer でパターンを使用して、参照を解放していますか?

于 2012-12-04T19:25:10.740 に答える