gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:00:29 24 4
gpt4 key购买 nike

关闭。这个问题是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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com