3

Windows フォーム アプリケーションで次の循環参照を解決するための適切なパターンを探しています。

  • アセンブリ 1 には、アセンブリ 2 でフォームを「.Show」する Infragistics メニュー項目を含む Windows フォームが含まれています。
  • アセンブリ 2 には、アセンブリ 1 でフォームを「.Show」する Infragistics メニュー項目を含む Windows フォームが含まれています。

通常、メニューには、アプリケーション全体で同じ項目があります。したがって、アセンブリ 1 とアセンブリ 2 の両方に、互いのフォームを「新規作成」して表示するための相互参照があります。

サイズに関する注意: 私のアプリは既存のアプリであるため、状況は上記の 2 つのアセンブリの状況ほど単純ではありません。しかし、上記の問題を単純に解決できれば (おそらく を実装しないで)、それをはるかに大きなアプリケーション (約 20 個のコンポーネント、コンポーネント間で互いにポップアップするいくつかのフォームを含む) に適用できます。

いくつかの解決策を考えてみましたが、どれも面倒です。私が見逃している簡単な解決策はありますか?

4

5 に答える 5

0

インターフェイスの使用についてはどうですか? インターフェイスを含む 3 番目のライブラリを構築すると、すべてのウィンドウがそれ自体から 1 つのインターフェイスを実装し、他のウィンドウのインターフェイスを参照します。

于 2008-12-12T15:46:59.780 に答える
0

現時点では、リフレクションを使用して、ポップアップが必要なウィンドウをポップアップすることにしました。それらを直接参照する必要がなくなり、相互参照されたすべてのアセンブリを作成しなくても、実際にはより簡単にコンポーネントを追加できるようになります。

MEF を調べましたが、残念ながら VS2008 ではなく VS2003 を使用しています。その提案は、私を単純な反省の道へと導きました。

ありがとう。

于 2008-12-15T15:50:11.923 に答える