0

私のプロジェクト

私は VS C# 2.0 を使用して Winform アプリケーションを作成しています。これは、いくつかのライブラリと 2 つの実行可能ファイルで構成され、それぞれが独自のプロジェクト ファイルにあり、すべてが同じソリューションの一部です。

各プロジェクトには、構成パラメーターを指定する独自の設定クラスがあります。一部のパラメーターはプロジェクト固有であり、一部は複数のプロジェクトで必要です (ただし、すべてのプロジェクトで必要なわけではありません)。その他は、USB 経由でユーザー マシンに接続されたハードウェア デバイスのモデルに依存します (実行時に選択されます)。

設定クラスは、列挙、プロパティ、および Load メソッドと Save メソッドで構成されます。

現在、すべてのクラスからすべての設定をインスタンス化し、ユーザーが構成を変更できるようにするプロパティ グリッドを含むフォームがあります。メインの実行可能プロジェクトに属します。

私の問題

ユーザーがアプリケーション全体を構成する方法が必要です (これをconfiguratorと呼びましょう)。そのため、プロパティ グリッドを含むフォームを持つ別のプロジェクトを作成しようとしましたが、 configuratorとメインの間の循環参照の問題で終了しました。実行可能。コンフィギュレーターは、単独で実行するか、メインの実行可能ファイルから呼び出す必要があります。

また、共通パラメーターの値の変更を対応するパラメーターに複製する良い方法もわかりません。たとえば、パラメーターpがプロジェクトABの設定クラスに共通である場合、ユーザーがAp値を変更すると、コンフィギュレーターはBp値を変更する必要があります (逆の場合も同様です)。これを解決するために私が考えた唯一の解決策は、プロパティ グリッドのPropertyValueChangedイベント ハンドラーの if 句の悪夢です。

ありがとう、ハイディ

4

1 に答える 1

0

In order to reduce circular dependency, you must include Abstract classes and Interfaces accordingly.

Base Library: consists of all "Data" classes, implementing IPropertyChangedNoitifier and which should be consistent throughout. Loading/Saving of configuration should be saved in this library itself.

Configuration Library: References Base Library and does configuration changes and invokes certain events about change of configuration. However this project must only contain the UI to configure;

Configuration Project: loads and executes UI of Configuration Library.

Actual Project: References Base Library and Configuration Library, and you can load Configuration UI from this project as well as from other project.

Talking about run time replication of settings, you can watch events of File content changes through File System Watcher and reload your config after certain millseconds once the file changes are detected.

于 2010-07-04T12:46:27.153 に答える