Ранее методы сериализации/десериализации использовали тип Item:
public class Item{}
Теперь у меня есть новый класс под названием ItemWrapper, полученный из Item с дополнительным свойством:
public class ItemWrapper : Item
{
public string NewProperty { get; set; }
}
Теперь мои методы сериализации/десериализации используют тип ItemWrapper. И теперь я нарушил совместимость. Я не могу загрузить файлы XML типа Item, которые были сохранены в более старых версиях. Я рассмотрел возможность установки try/catch по методу десериализации, когда он пытается десериализовать Item как ItemWrapper, а затем в catch я попытался бы десериализоваться как Item. Или я мог бы xPath увидеть структуру XML, и если no ItemWrapper найдено, я мог бы считать его Item. Оба этих решения выглядят взломанными, и я уверен, что есть лучший подход к решению этой ситуации. Любые идеи?