0

假设我有以下课程:

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;}
        // ...
    }
}

我一直Dataset在使用默认的DataContractSerializer. 现在,在重构期间,我更改了Datafrom A.B.Cto的命名空间,A.B.C.D反序列化不再起作用:的 DataMembersData都是 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),但仍然没有。

如何修复反序列化?

4

1 回答 1

1

如果未明确指定命名空间,则为其添加前缀。你需要做的是用类似的东西来装饰这个类:

[DataContract(Namespace = "http://schemas.datacontract.org/2004/07/A.B.C")]
于 2013-11-01T13:26:05.327 回答