2013-11-01 23 views
0

命名空間比方說,我有以下類:重構一類具有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命名空間從A.B.CA.B.C.D和反序列化不再起作用:中Data的數據成員均爲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應用商店應用),以防萬一,但仍然沒有。

如何修復反序列化?

+0

@gleng什麼代理文件? –

+0

@gleng沒有服務客戶端,只是一個應用程序通過數據合同序列化將本地數據存儲爲文件 –

回答

1

如果沒有明確指定名稱空間,則以前綴爲前綴。你需要的是用類似的裝飾類:

[DataContract(Namespace = "http://schemas.datacontract.org/2004/07/A.B.C")]