プロジェクト2(c#Windowsフォーム)でプロジェクト1(VB.NET)のコードを使用したいと思います。私たちは循環参照を作成することはできませんが、それを実現する他の方法はありますか?循環参照を使用する
答えて
最初に、循環参照とは間違った設計を意味します。両方から呼び出される、機能を、別のライブラリを作成し、一般的に
1.エキス「円形」のコード
:あなたはこのようなものを必要な場合は、次のいずれかの方法であなたのデザインを変更する必要があります「循環」ライブラリ。次に、Project1とProject2の両方を新しく作成したProject3に依存させます。
2.コールバック
が第二に依存してちょうど1つのlibにしてください - あなたのコードから任意の例なしに、一方が他方に依存するべきである、決定するのは難しいですが、しかし、「Windowsフォーム」からI Project2がProject1に依存している方が良いでしょう。 つまり、Project2はProject1のすべてを知っているということです。 Project1からProject2に何かを呼び出す必要がある場合は、初期化中にコールバックを提供するだけです。 など。 Project1には関数が含まれています。これは長い計算時間を必要とし、完了時に通知を受けたいとします。 OK、問題ありません。 Project2は、コールバック(デリゲートの検索)で操作を開始し、独自の作業を続けます。 Project1の関数が終了すると、提供されたコールバックを使用してProject2から関数が呼び出されます(この関数はわかりませんが、コンパイラが管理するためコールバックとして提供できません)。
コードを一切提供していないので、より多くのアドバイスをするのは難しいです。より多くのヘルプが必要な場合は、簡単な例で質問を更新してください。
私の2つのフォームプロジェクトを見てください。私は2つのフォームがそれらの間でデータを送ることができるように、子フォームにメインフォームのインスタンスを渡します:http://stackoverflow.com/questions/36251695/c-sharp-reference-two-forms – jdweng
OK、コードがあります少し面倒ですが、私が理解していることから、あなたはデータを共有したくありません。 Form2からForm1のリストを表示するだけです。これは、循環参照に関してはまったく当てはまりません。 Form2のコンストラクターをパラメーターとしてForm1から取得するようにします。 – Zoka
- 1. Java循環参照
- 2. 循環参照(再び...)
- 3. エンティティフレームワーク、コードファーストモデリングと循環参照
- 4. ASP C#ユーザーコントロール循環参照
- 5. モジュール間の循環参照?
- 6. DBの循環参照
- 7. ビジネスエンティティ、データアクセスレイヤー - 循環参照
- 8. ストライプ - JSON循環参照
- 9. Entity Frameworkの循環参照
- 10. Javascript /ガベージコレクタの循環参照
- 11. 春@ResponseBody JSON循環参照
- 12. "循環属性グループ参照"
- 13. 循環参照の検索
- 14. Microsoft Moles:循環参照エラー?
- 15. POCOエンティティとSilverlightサービスを使用する循環参照
- 16. javascriptのクリックイベントを使用した循環参照
- 17. 循環参照を持つオブジェクトのin_array
- 18. zope.schemaを使って循環参照を定義する
- 19. JavaScript関数間の循環参照
- 20. Javascriptの循環参照の例?
- 21. EFコード初回循環参照
- 22. Xamarinのガベージコレクタと循環参照
- 23. Hibernate @onetomany Gsonとの循環参照エラー
- 24. ASP.NET MVC - カスケードドロップダウン循環参照エラー
- 25. C++のガベージコレクションと循環参照データ
- 26. 防止JavaScriptのwindow.getSelection()循環参照
- 27. Webサービスでの循環参照
- 28. MVC 4、Upshotエンティティ循環参照
- 29. 不正な循環参照エラー
- 30. 大きな循環参照とJVMガベージコレクタ
私はVB.NETプロジェクトをビジネスロジックと扱いますが、C#プロジェクトはUI部分です。そうであれば、UIロジックをビジネスクラスに取り入れると非常に間違っています。 つまり、プロジェクト1と2のすべてのクラスを参照する3番目のプロジェクトを作成することができます。 – Martheen
+1プロジェクトは3番目です。これらの2つを参照するか、参照したいものとそのコードからdllを作成する両方から取り出す。 – Claudius