.config到构造函数的技巧?

cla*_*aco 5 .net configuration factory interface inversion-of-control

我正在开发一个快速项目来监控/处理数据.基本上,这只是监视器,计划和处理器.监视器使用计划检查数据(ftp,本地,imap,pop等)并将新数据发送到处理器.它们都有接口.

我正在尝试找到一种合理的方法来使用config来配置每个监视器使用的调度/处理器.这很简单:

<monitor type="any.class.implementing.monitor">
    <schedule type="any.class.implementing.schedule">
        ...
    </schedule>
    <processor type="any.class.implementing.processor" />
</monitor>
Run Code Online (Sandbox Code Playgroud)

我正在努力解决的问题是配置任何旧监视器/日程表/处理器的最佳方法是什么.一方面,可以实现构造函数参数或属性(给出任何语法):

<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>
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是每个接口中的工厂方法,它将自定义配置作为参数:

public IMonitor Create(CustomConfigSection config);
Run Code Online (Sandbox Code Playgroud)

我见过人们都使用它们.你喜欢哪个?将配置映射到构造函数时的任何技巧?

对于DI是否能适应这种混乱,我有点不知所措.最后,它将是每个监视器实例的一组绑定,除了默认值(配置可以覆盖)之外,这似乎毫无意义.