我有一个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实例是否会反映这一点?
答案 0 :(得分:2)
PartCreationPolicy
仅适用于MEF创建的零件。您的Deserialize
方法不使用MEF,因此它会创建一个新实例。 MEF创建和管理的实例不会更新以匹配新实例。