我可以重新分配MEF共享导出吗?

时间:2012-12-18 19:03:37

标签: c# silverlight prism mef

我有一个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;
    }
}

我将此标记为共享导出,因为我一次只需要一个实例,但如果我重新分配此类的MEF [Import] ed实例(通过在作业中调用Deserialize)它仍然是一个单身人士吗?另外,其他Imported实例是否会反映这一点?

1 个答案:

答案 0 :(得分:2)

PartCreationPolicy仅适用于MEF创建的零件。您的Deserialize方法不使用MEF,因此它会创建一个新实例。 MEF创建和管理的实例不会更新以匹配新实例。