1

DataContractシリアル化され、共有MEFとしてマークされているクラスがあり[Export]ます。

例:

[DataContract(Name="MyClass")]
[Export(typeof(MyClass))]
[PartCreationPolicy(CreationPolicy.Shared)]
public class MyClass
{
    [DataMember]
    public string Field1{get;set;}

    [DataMember]
    public string Field2{get;set;}

    public static MyClass Deserialize(XElement serialized)
    {
        DataContractSerializer ser = new DataContractSerializer(typeof(MyClass));
        MyClass anotherMyClass = (MyClass)ser.ReadObject(serialized.CreateReader());

        return anotherMyClass;
    }
}

一度に1つのインスタンスのみが必要なため、これを共有エクスポートとしてマークしましたが、[Import]このクラスのMEF edインスタンスを(割り当てで呼び出すことによってDeserialize)再割り当てした場合でも、シングルトンになりますか?また、他のインポートされたインスタンスはこれを反映しますか?

4

1 に答える 1

2

MEFによって作成されたPartCreationPolicyパーツにのみ適用されます。メソッドはMEFDeserializeを使用しないため、新しいインスタンスが作成されます。MEFによって作成および管理されるインスタンスは、新しいインスタンスと一致するように更新されません。

于 2012-12-18T19:22:49.380 に答える