Я работаю с сериализацией DataContract и не хочу менять тип свойства Datamember.
[DataContract]
public class Page
{
[DataMember]
public int Height{get;set;}
}
Теперь я не хочу менять тип свойства Height с «int» на «double». Однако я не хочу быть уверен, что если я открою старый файл, значение из файла будет использоваться и правильно присвоено «Высоте», то есть значение типа int, приведенное к двойному.
Я хочу сделать это без необходимости сохранять какие-либо избыточные свойства. Есть ли способ добиться этого?





The following changes are always breaking
...
- Changing the data contract of a data member. For example, changing the type of data member from an integer to a string, or from a type with a data contract named "Customer" to a type with a data contract named "Person".
Так что нет, вы не можете этого сделать, это нарушает контракт.
Вам нужно будет вырезать и бежать каким-то образом. Возможно, вам придется сделать сантехнику, чтобы справиться со старыми контрактами.
Десериализация
intвdoubleне должна вызвать никаких проблем. Вы можете попробовать написать простое приложение, чтобы проверить это.