多个项目的配置

时间:2010-07-04 12:26:47

标签: c# settings circular-dependency

我的项目

我正在使用VS C#2.0编写一个Winform应用程序,它包含几个库和两个可执行文件,每个库都在自己的项目文件中,并且是同一解决方案的所有部分。

每个项目都有自己的设置类和配置参数。有些参数是项目特定的,有些参数需要多个项目(但不是所有项目都有),而其他参数则取决于通过USB连接到用户机器的硬件设备模型(并在运行时选择)。

设置类包括枚举,属性以及加载和保存方法。

目前我有一个带有属性网格的表单,该表单实例化所有类中的所有设置,并允许用户更改配置。它属于主要的可执行项目。

我的问题

我需要一种方法让用户配置整个应用程序(我们称之为配置程序),所以我尝试创建另一个项目,该项目具有属性网格的表单,但结束于配置程序与我的主要可执行文件之间的循环引用问题。 配置程序需要单独运行或从主可执行文件中调用。

另外,我不知道将一个公共参数值的更改复制到其对应方的好方法。例如,如果参数 p 对于项目 A B 的设置类是通用的,则当用户更改 Ap 值,配置器必须更改 Bp 值(反之亦然)。我认为解决这个问题的唯一解决方案是在属性网格的 PropertyValueChanged 事件处理程序中出现if子句的噩梦。​​

谢谢,Heiddy

1 个答案:

答案 0 :(得分:0)

为了减少循环依赖,必须相应地包含抽象类和接口。

基础库:由所有“数据”类组成,实现IPropertyChangedNoitifier,并且应始终保持一致。加载/保存配置应保存在此库中。

配置库:引用基本库并执行配置更改并调用有关配置更改的某些事件。但是,此项目必须仅包含要配置的UI;

配置项目:加载并执行配置库的UI。

实际项目:引用基础库和配置库,您可以从此项目以及其他项目加载配置UI。

谈到设置的运行时复制,您可以通过文件系统观察器观察文件内容更改事件,并在检测到文件更改后的某个毫秒后重新加载配置。