Вот проблема: наш основной класс (скажем, контракт) меняется каждый год. Некоторые свойства добавлены, другие удалены. Мы не знаем, как это будет выглядеть в следующем году. Это может сильно измениться или не измениться вовсе.
С другой стороны, теперь мы (новое требование ...) должны хранить историю каждого контракта. Каждый раз, когда пользователь обновляет контракт, весь объект должен быть сохранен в резервной копии (например, сериализован в таблицу).
Конечно, мы должны иметь возможность прочитать его обратно ... Один из вариантов (брутальный) - каждый год иметь новый класс контрактов (Contract2008, Contract2009, ...).
Но это было бы очень громоздко (и некрасиво), так как многие классы зависят от Контракта - на самом деле нам придется создавать кучу новых классов каждый год.
У вас когда-нибудь были такие проблемы? Любое предложение?
Заранее спасибо!
(Мы используем C # 2.0.)
ДОБАВЛЕНО: Спасибо за ваши ответы. Теперь мы спрашиваем себя, как мы могли бы использовать словарь / XML-файл для реализации контроля версий, не нарушая весь код. Словарь кажется очень сексуальным в этом контексте: о)