Справочная информация:
Я буду работать над инструментами, которые будут зависеть от быстро меняющегося API и быстро меняющейся модели данных, над которыми у меня будет нулевой контроль.
Изменения модели данных и API распространены, проблема в том, что мой код должен продолжать работать с текущими и всеми предыдущими версиями (т. Е. 100% -ная совместимость с обратными словами), потому что все будет по-прежнему использоваться внутри компании.
Он также должен изящно ухудшаться при обнаружении отсутствующих / неизвестных функций и т. Д.
Инструменты будут написаны на C # с WinForms и предназначены для тестирования нестандартного оборудования.
<Edit>
Моей целью было бы что-то близкое к тому, чтобы создавать классы для добавления функций, а когда происходят изменения модели данных, создавать новый набор классов моделей данных, которые будут создаваться фабрикой на основе версии API.
Задача для меня заключается в том, что будущие функции могут зависеть от конкретных моделей данных, которые могут смешиваться и сопоставляться (пока не будет достигнута окончательная комбинация). Как бы вы справились с этим изящно?
<Edit2>
Конечно, после того, как продукт будет отгружен, я хотел бы повторно использовать инструмент и просто добавить код для новых продуктов. До того, как я начал здесь, каждый цикл продуктов подразумевал переписывание (с нуля) всего инструментария, что я намерен предотвратить в будущем:)
</Edit>
Вопрос:
Какие методы проектирования и шаблоны вы бы предложили или имели успех для обеспечения совместимости с несколькими версиями API / модели данных?
Какие подводные камни я должен остерегаться?