2010-11-30 11 views
3

このメッセージのCompositionException例外があります: "タイプ 'SomeService'のComposablePartは、無効な状態であるため再構成できません。既に完全にプレビューまたは作成されている場合にのみ再構成できます。MEF CompositionException

例外は、このコードによってスローされます。

public class SomeService : ISomeService 
{  
    [Import(typeof(ISomeType))] 
    public ISomeType SomeType { get; set; } 

    public SomeService() 
    { 
     Container.ComposeParts(this); 
    } 
} 

が、この罰金のすべて:

public class SomeService : ISomeService 
{  
    [Import(typeof(ISomeType))] 
    public ISomeType SomeType { get; set; } 

    public SomeService() 
    { 
     this.SomeType = Container.GetExportedValue<ISomeType>(); 
    } 
} 

私は他の場所でこのコード「Container.ComposeParts(この)」を持っており、それがなく、動作しますここでそれはしません。

"無効な状態になっているため再構成できません"というグーグルで面白いことはありませんでした。

このメッセージは何を意味していますか? ありがとうございました!

答えて

1

これは、複数のスレッドからCompositionContainerを使用している可能性があります。それはあなたですか?

+0

あなたが正しいかもしれません。私はWindowsサービスでwcfサービスをホストしています。どちらのサービスも、Containerの1つのインスタンスを使用します。後でこれを修正しようとします。今のところ、Container.GetExportedValueで十分です。 – Serhiy

+0

そうなら、isThreadSafe = trueでコンテナが作成されていることを確認してください – hammett