2016-04-01 15 views
0

プロジェクト2(c#Windowsフォーム)でプロジェクト1(VB.NET)のコードを使用したいと思います。私たちは循環参照を作成することはできませんが、それを実現する他の方法はありますか?循環参照を使用する

+2

私はVB.NETプロジェクトをビジネスロジックと扱いますが、C#プロジェクトはUI部分です。そうであれば、UIロジックをビジネスクラスに取り入れると非常に間違っています。 つまり、プロジェクト1と2のすべてのクラスを参照する3番目のプロジェクトを作成することができます。 – Martheen

+0

+1プロジェクトは3番目です。これらの2つを参照するか、参照したいものとそのコードからdllを作成する両方から取り出す。 – Claudius

答えて

1

最初に、循環参照とは間違った設計を意味します。両方から呼び出される、機能を、別のライブラリを作成し、一般的に

1.エキス「円形」のコード

:あなたはこのようなものを必要な場合は、次のいずれかの方法であなたのデザインを変更する必要があります「循環」ライブラリ。次に、Project1とProject2の両方を新しく作成したProject3に依存させます。

2.コールバック

が第二に依存してちょうど1つのlibにしてください - あなたのコードから任意の例なしに、一方が他方に依存するべきである、決定するのは難しいですが、しかし、「Windowsフォーム」からI Project2がProject1に依存している方が良いでしょう。 つまり、Project2はProject1のすべてを知っているということです。 Project1からProject2に何かを呼び出す必要がある場合は、初期化中にコールバックを提供するだけです。 など。 Project1には関数が含まれています。これは長い計算時間を必要とし、完了時に通知を受けたいとします。 OK、問題ありません。 Project2は、コールバック(デリゲートの検索)で操作を開始し、独自の作業を続けます。 Project1の関数が終了すると、提供されたコールバックを使用してProject2から関数が呼び出されます(この関数はわかりませんが、コンパイラが管理するためコールバックとして提供できません)。

コードを一切提供していないので、より多くのアドバイスをするのは難しいです。より多くのヘルプが必要な場合は、簡単な例で質問を更新してください。

+0

私の2つのフォームプロジェクトを見てください。私は2つのフォームがそれらの間でデータを送ることができるように、子フォームにメインフォームのインスタンスを渡します:http://stackoverflow.com/questions/36251695/c-sharp-reference-two-forms – jdweng

+0

OK、コードがあります少し面倒ですが、私が理解していることから、あなたはデータを共有したくありません。 Form2からForm1のリストを表示するだけです。これは、循環参照に関してはまったく当てはまりません。 Form2のコンストラクターをパラメーターとしてForm1から取得するようにします。 – Zoka

関連する問題