[英]Refactoring the namespace of a class with a DataContract
假設我有以下課程:
namespace A.B.C
{
[DataContract]
public Data
{
[DataMember] public int Value1 {get;set;}
[DataMember] public double Value2 {get;set;}
[DataMember] public MyClass Value3 {get;set;}
}
}
namespace X.Y.Z
{
[DataContract]
public Dataset
{
[DataMember] public Data Data1 {get;set;}
[DataMember] public int Data2 {get;set;}
// ...
}
}
我還沒有使用默認的DataContractSerializer
序列化和反序列化Dataset
對象。 現在,在重構期間,我將Data
的命名空間從ABC
更改為ABCD
,反序列化不再起作用: Data
的DataMembers都為0。
我試圖通過將舊名稱空間添加到DataContract來解決此問題:
namespace A.B.C.D
{
[DataContract(Namespace = "A.B.C")]
public Data
{
[DataMember] public int Value1 {get;set;}
[DataMember] public double Value2 {get;set;}
[DataMember] public MyClass Value3 {get;set;}
}
}
但這並不能解決問題。 為了以防萬一,我也嘗試了一次干凈的重建並重新部署(Windows Store App),但還是沒有。
如何解決反序列化?
如果未顯式指定名稱空間,則會為其添加前綴。 您需要做的是用以下內容裝飾類:
[DataContract(Namespace = "http://schemas.datacontract.org/2004/07/A.B.C")]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.