.net - .config 到构造函数的技巧?

标签 .net configuration interface inversion-of-control factory

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

12 个月前关闭。




Improve this question




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

我正在尝试找到一种理智的方式来使用 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>

另一种解决方案是每个接口(interface)中的工厂方法,它将自定义配置作为参数:
public IMonitor Create(CustomConfigSection config);

我见过有人同时使用这两种方法。你喜欢哪个?将配置映射到构造函数时有什么技巧吗?

我对 DI 是否能融入这个烂摊子感到有些不安。最后,这将是每个监视器实例的一组绑定(bind),除了配置可以覆盖的默认值之外,这似乎毫无意义。

最佳答案

当我完成这种事情时,我已经实现了 IConfigurationSectionHandler它基本上作为一个工厂来解析配置,创建配置中指定类型的对象,并以某种数据结构(通常是列表或字典)返回它们。无论您使用 IConfigurationSectionHandler与否,我认为工厂是要走的路,因为您将本地化处理解析配置文件并在一个类(或每个部分一个)中创建对象的代码。

我也更喜欢具有简单构造函数的类和用于配置的属性 setter / getter ,而不是构造函数中具有大量参数的类。这使得工厂更容易操作,并减少了工厂与正在构建的类之间的耦合。

关于.net - .config 到构造函数的技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/264243/

相关文章:

.net - Silverlight 安全吗?

java - 在 Java 中持久化配置的最合适方法是什么?

php - 如何为 PHP 正确配置 Nginx(Yii 框架和 Zurmo)

c# - 多重继承?

php - 数据库接口(interface)的开源通用 Web 服务?

java - 将@interface传递给 'data'类,然后显示字段 'getName()'

c# - 无法将数据列从一个数据表复制到另一个数据表

.net - 使用 MVVM 处理 WPF 中的对话框

python - 使用pythonnet实例化后如何让msaccess及其属性可用?

java - Websphere 数据库配置文件保存在哪里?