如何在不破坏向后兼容性的情况下更改DataContract属性的类型?

问题描述 投票:0回答:1

我正在使用DataContract Serialization,我不想更改类型Datamember属性

[DataContract]
public class Page
{
    [DataMember]
    public int Height{get;set;}
}

现在我不想将Height属性的类型从'int'更改为'double'。但是,我不确定如果我打开一个旧文件,则使用该文件中的值并将其正确分配给'Height',即int类型的值被转换为double。

我想这样做而不必保留任何冗余属性。有什么办法可以实现吗?

c# datacontractserializer datacontract
1个回答
1
投票

Data Contract Versioning

以下更改始终是中断

...

  • 更改数据成员的数据协定。例如,将数据成员的类型从整数更改为字符串,或者从具有名为“Customer”的数据协定的类型更改为具有名为“Person”的数据协定的类型。

所以,你不能这样做,这打破了合同。

你需要以某种方式切割和运行。您可能需要制作管道来处理旧合同。

© www.soinside.com 2019 - 2024. All rights reserved.