Раньше у меня были простые классы, как показано ниже:
Код: Выделить всё
public class Product {
public Money Price {get; set;}
}
public class Money {
public decimal Amount {get; set;}
public CurrencyEnum Currency {get;set;}
}
Я сохранил сериализованные объекты в формате XML в базе данных.
Сохраненный XML выглядел примерно так, как показано ниже:
Поскольку мои потребности в отображении валюты изменились, я переключился на использование библиотеки NodaMoney и просто изменил тип свойства (моя ошибка) в классе Product.
Тип NodaMoney при сериализации имеет другую структуру:
Это критическое изменение, и во время десериализации я получаю ошибки. Я использую XmlSerializer, и мне нужен как старый, так и новый формат поля «Цена» для правильной десериализации в новый тип NodaMoney. Более того, в некоторых устаревших записях может отсутствовать узел «Валюта», который мне нужно заполнить некоторым значением по умолчанию.
Как лучше всего это сделать?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... as-changed