1

ソリューション内に 2 つの C# プロジェクトがあります。

最初のプロジェクトは、winforms複数のクラスを持つプロジェクトで、 と呼ばれQuantumGUIます。2 番目のプロジェクトは、class library複数のクラスを持つプロジェクトで、 と呼ばれQuantumDALます。

私の目的は、QuantumDAL のクラスから、QuantumGUI クラスまたは Form.cs の変数にアクセスして設定することです。QuantumDAL プロジェクトに QuantumGUI への参照を追加しようとしましたが、次のエラー“A Reference to ‘QuantumGUI’ could not be added. Adding the project as a reference would cause a circular dependency”.
を受け取りました: プロジェクトの依存関係を追加しようとして同様のエラー メッセージを受け取りました。考えてみると、エラーメッセージは理にかなっています。私は他の方法を試しましたが、これを行う可能性のある方法を検討しましたが、空になりました。これを実現するための巧妙な方法があるに違いないと私は信じています。
私が間違った方法でこれを行っている場合、両方のプロジェクトでコードからアクセスできる「グローバル」クラスを持つ方法はありますか? これをご覧いただきありがとうございます。

4

1 に答える 1

0

あなたがやろうとしていることには2つの問題があります:

まず、IDE が警告しているように、循環依存関係を作成しようとしています。つまり、コンパイラはプロジェクト B をビルドする前にプロジェクト A をビルドする必要がありますが、プロジェクト A をビルドする前にプロジェクト B をビルドする必要があります。どちらのプロジェクトも "最初" に進むことはできません。

*.exe2 つ目の問題は、WinForms プロジェクトが実行可能ファイルである可能性が高く、IDE を介してファイルへの参照を追加できないことです。これらの参照はコマンド ラインから追加できますが、Visual Studio がそれを止めようとしているという事実は、それが本当に悪い考えであるという危険信号であるはずです。

必要なことを行う正しい方法は、共通クラスを、他の両方のプロジェクトから参照する 3 番目のクラス ライブラリにリファクタリングすることです。必要に応じて、状況が変化したときに関心のあるオブザーバー オブジェクトに通知するイベントを関連付けることができます (特に、INotifyPropertyChangedインターフェイスとそのイベントを調べます)。

于 2012-12-24T18:00:58.510 に答える