0

我的项目

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

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

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

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

我的问题

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

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

谢谢,海蒂

4

1 回答 1

0

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

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

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

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

实际项目:参考基础库和配置库,您可以从该项目以及从其他项目加载配置 UI。

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

于 2010-07-04T12:46:27.153 回答