簡體   English   中英

使用DataContract重構類的名稱空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM