C# 使用DataContract重构类的命名空间
假设我有以下课程:C# 使用DataContract重构类的命名空间,c#,.net,datacontractserializer,C#,.net,Datacontractserializer,假设我有以下课程: 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
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.C
更改为A.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应用商店应用程序),以防万一,但仍然一无所获
如何修复反序列化?如果未明确指定名称空间,则会在名称空间前面加前缀。你需要的是用以下东西装饰课堂:
[DataContract(Namespace = "http://schemas.datacontract.org/2004/07/A.B.C")]
@gleng什么代理文件?@gleng没有服务客户端,只有一个通过数据协定序列化将本地数据存储为文件的应用程序