我正在做一个快速的项目来监控/处理数据。本质上,这只是监视器、时间表和处理器。监视器使用计划检查数据(ftp、本地、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 是否能融入这个烂摊子感到有些不安。最后,这将是每个监视器实例的一组绑定,除了配置可以覆盖的默认值之外,这似乎毫无意义。