Звучит так, будто вы просто запрашиваете шаблон проектирования (или набор шаблонов), который вы могли бы использовать, чтобы сделать это общим, ориентированным на будущее образом, верно?
В идеале некоторые из атрибутовчто вы, вероятно, хотите
- Каждый «преобразователь» отделен друг от друга.
- Вы можете легко добавлять новые «преобразователи» без необходимости переписывать основную подпрограмму «драйвера».
- Вам не нужно перекомпилировать / повторно развертывать все ваше решение каждый раз, когда вы модифицируете трансформатор или, по крайней мере, добавляете новое.
Каждый «преобразователь» в идеале должен реализовывать общий интерфейсо которой знает ваша рутина драйвера - назовите ее IXmlTransformer.Ответственность этого интерфейса состоит в том, чтобы принять XML-файл и вернуть любую объектную модель / набор данных, который вы используете для сохранения в базе данных.Каждый из ваших преобразователей будет реализовывать этот интерфейс.Для общей логики, которая является общей для всех преобразователей, вы можете либо создать базовый класс, от которого все наследуют, либо (мой предпочтительный выбор) иметь набор вспомогательных методов, которые вы можете вызывать из любого из них.
Я быНачните с использования Factory, чтобы создать каждый «преобразователь» из вашей основной процедуры драйвера.Фабрика может использовать рефлексию для опроса всех сборок, которые она может видеть, или что-то вроде MEF, которая может сделать большую работу за вас.Ваша логика драйвера должна использовать фабрику для создания и преобразования всех преобразователей.
Затем вам понадобится некоторая логика и механизм для «поиска» каждого XML-файла, полученного для данного Transformer - возможно, у каждого XML-файла есть заголовок, которыйВы можете использовать, чтобы идентифицировать или что-то подобное.Опять же, вы хотите отделить их от своей основной логики, чтобы вы могли легко добавлять новые преобразователи без изменения процедуры драйвера.Например, вы можете предоставить файл XML каждому преобразователю и спросить его «можете ли вы преобразовать этот файл», и каждый преобразователь должен «взять на себя ответственность» за данный файл.
Каждый раз, когда ваша процедура драйвера получаетновый файл XML, он ищет соответствующий преобразователь и запускает его;результат отправляется в область обработки БД.Если преобразователь не найден, вы помещаете файл в каталог для последующего опроса.
Я бы порекомендовал прочитать книгу Роберта Мартина, такую как Agile Principles, Patterns and Practices (http://www.amazon.co.uk/Agile-Principles-Patterns-Practices-C/dp/0131857258),), в которой приведены хорошие примерышаблоны проектирования для таких ситуаций, как ваша, например, Factory и DIP и т. д.
Надеюсь, это поможет!