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

时间:2019-04-08 04:16:18

标签: c# datacontractserializer datacontract

我正在使用DataContract序列化,并且我不会更改Datamember属性的类型

<h1> Here is a Header</h1>
<input type='text' id='myTextInput'>
<button type='button' id='myButton'>Click</button>

现在我不想将Height属性的类型从'int'更改为'double'。 但是,我无法确保如果打开旧文件,则使用文件中的值并将其正确分配给“高度”,即将int类型的值强制转换为double。

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

1 个答案:

答案 0 :(得分:1)

Data Contract Versioning

  

以下更改始终是失败的

     

...

     
      
  • 更改数据成员的数据合同。例如,将数据成员的类型从整数更改为字符串,或者从类型更改   带有名为“客户”的数据合同的类型为带有数据合同的类型   名为“人”。
  •   

因此,您不能这样做,这会破坏合同。

您将需要以某种方式剪切和运行。您可能需要进行处理以处理较旧的合同。