2013-11-01 18 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")]