Я работаю над быстрым проектом по мониторингу / обработке данных. По сути, это просто мониторы, графики и процессоры. Монитор проверяет данные (ftp, local, imap, pop и т. Д.) По расписанию и отправляет новые данные в процессор. Все они имеют интерфейсы.
Я пытаюсь найти разумный способ использовать config для настройки расписания / процессора, используемого каждым монитором. Это довольно просто:
<monitor type="any.class.implementing.monitor">
<schedule type="any.class.implementing.schedule">
...
</schedule>
<processor type="any.class.implementing.processor" />
</monitor>
То, с чем я борюсь, - это лучший способ настроить любой старый монитор / расписание / процессор, добавленный в микс. С одной стороны, можно реализовать параметры или свойства конструктора (не использовать синтаксис):
<monitor type="any.class.implementing.monitor">
<args>
<arg value="..." />
</args>
<properties>
<property name="..." value=..." />
</properties>
<schedule type="any.class.implementing.schedule">
...
</schedule>
<processor type="any.class.implementing.processor" />
</monitor>
Другим решением является заводской метод в каждом интерфейсе, который принимает пользовательскую конфигурацию в качестве параметра:
public IMonitor Create(CustomConfigSection config);
Я видел, как люди используют оба. Что Вы предпочитаете? Какие уловки торговли при отображении конфигурации на конструкторы?
Я немного расстроен из-за того, что DI может вписаться в этот беспорядок. В конце концов, это будет набор привязок для каждого экземпляра монитора, который кажется бессмысленным, за исключением значений по умолчанию, которые может охватить конфигурация.