Ранее методы сериализации/десериализации использовали тип 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
. Оба этих решения выглядят взломанными, и я уверен, что есть лучший подход к решению этой ситуации. Любые идеи?