有没有办法枚举所有设置以获取配置管理器已加载的值?也许我在这里很密集,但我找不到一种方法来枚举一个部分组中包含的设置。
我有一个WCF服务,它旨在允许调用系统传入请求对象,这些对象定义了要在服务器上执行的操作。该服务在运行时动态加载程序集(如插件模型)并确定哪个对象可以响应请求。我正在寻找一种方法,我可以发送请求“给我所有的配置信息”,该服务可以返回加载的信息。我对已经加载到内存中的内容以及正在使用的内容以及实际配置文件中指定的值感兴趣(可以替换配置而不会影响内存中的任何内容,直到重新启动)。
我可以使用一个SettingLoaded事件来跟踪它们,但这看起来很牵强。
有什么想法吗?
[更新]这个问题的主要目的是我需要一种方法来确定程序集物理.config文件中包含的设置与作为“默认”配置的一部分编译到程序集中的设置之间的差异
我不能只使用物理配置文件作为比较的起点,因为可能没有配置文件存在,或者配置文件可能只提供其中一个值,导致其他人使用默认值值。
答案 0 :(得分:1)
也许我误解了你的问题,但对我来说,唯一保证为键/值对的设置是AppSettings
,你可以通过ConfigurationManager.AppSettings
属性获取。
答案 1 :(得分:0)
听起来你基本上想要一个插件注册系统。这听起来像是在尝试区分内存中的内容与已加载的内容,因为您想要检测注册何时更改而不重新启动?
如果这些是真的,一个选项是创建自己的注册xml文件,并使用FileWatcher类在文件更改后获取事件,然后您可以重新加载注册信息。
答案 2 :(得分:0)
这里的解决方案可能是对流程/过程的更改,以便通过配置文件显式提供所有基于配置的设置。这可以通过始终为任何设置的默认值提供中断或“已知 - 坏”值来确保。这将确保配置文件必须提供有效值。这种方法允许使用配置文件作为比较源来比较值。
这种方法的缺点是必须将所有配置设置合并到主程序集的配置文件中才能使值生效。