Estoy trabajando en un proyecto rápido para monitorear/procesar datos. Básicamente, eso son solo monitores, horarios y procesadores. El monitor comprueba los datos (ftp, local, imap, pop, etc.) usando un programa y envía datos nuevos a un procesador. Todos ellos tienen interfaces..config a trucos de constructor?
Estoy tratando de encontrar una manera sensata de usar config para configurar qué programa/procesador utiliza cada monitor. Eso es bastante fácil:
<monitor type="any.class.implementing.monitor">
<schedule type="any.class.implementing.schedule">
...
</schedule>
<processor type="any.class.implementing.processor" />
</monitor>
Lo que estoy luchando con es ¿cuál es la mejor manera de configurar cualquier monitor antiguo/horario/procesador arrojados a la mezcla. Por un lado, se podría aplicar params constructor o propiedades (hacerle OT tomar cualquier sintaxis):
<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>
Otra solución es el método de fábrica en cada interfaz que toma la configuración personalizada como una param:
public IMonitor Create(CustomConfigSection config);
He visto personas usar ambos. ¿Qué prefieres? ¿Algún truco del oficio al mapear config a los constructores?
Estoy un poco desgarrado en cuanto a si DI puede encajar en este lío. Al final, sería un conjunto de enlaces por instancia de monitor, lo que parece inútil a excepción de los valores predeterminados, que config podría cubrir.