Я работаю над быстрым проектом по мониторингу/обработке данных. По сути, это просто мониторы, графики и процессоры. Монитор проверяет данные (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>
Что я борюсь с то, что это лучший способ, чтобы настроить любой старый монитор/график/процессор, брошенный в смесь. С одной стороны, можно реализовать конструктор Params или свойство (дать ВЗ принимать какой-либо синтаксис):
<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 вписаться в этот беспорядок. В конце концов, это будет набор привязок для каждого экземпляра монитора, который кажется бессмысленным, за исключением значений по умолчанию, которые может покрыть конфигурация.