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

C# 如何在不破坏向后兼容性的情况下更改DataContract属性的类型?,c#,datacontractserializer,datacontract,C#,Datacontractserializer,Datacontract,我正在处理DataContract序列化,不想更改类型a Datamember属性 [DataContract] public class Page { [DataMember] public int Height{get;set;} } 现在我不想把Height属性的类型从int改为double。 但是,我不想确保如果我打开一个旧文件,该文件中的值会被使用并正确分配到“Height”,即int类型的值被转换为double 我想这样做,而不必保留任何多余的属性。 我有什么办法可

我正在处理DataContract序列化,不想更改类型a Datamember属性

[DataContract]
public class Page
{
    [DataMember]
    public int Height{get;set;}
}
现在我不想把Height属性的类型从int改为double。 但是,我不想确保如果我打开一个旧文件,该文件中的值会被使用并正确分配到“Height”,即int类型的值被转换为double

我想这样做,而不必保留任何多余的属性。 我有什么办法可以做到这一点吗

以下更改始终处于中断状态

  • 更改数据成员的数据协定。例如,将数据成员的类型从整数更改为字符串,或从类型更改为 将名为“Customer”的数据协定转换为具有数据协定的类型 名为“人”
所以不,你不能这样做,这违反了合同


你需要以某种方式切入并跑动。您可能需要创建管道来处理旧合同。

int
反序列化为
double
应该不会有任何问题。您可以尝试编写一个简单的应用程序来测试这一点。