39

2つのプロジェクトがあります。

Project#2にはProject#1への参照があります

Project#1でProject#2を参照する必要がありますが、vs.netは循環依存について不平を言っています。

これから抜け出す方法はありますか?

4

11 に答える 11

76

絶対違う。循環依存は、設計が悪いことを示しています。厳しく言うつもりはありません。これにはいくつかの方法があります。

1) 共通コードを別のプロジェクト、たとえば Project#0 にリファクタリングできます

2) デザインを修正することができます。これはおそらく進むべき道です。

Uncle Bob には、パッケージングの原則に関する優れた記事があり、非循環依存の原則が含まれています。 http://www.objectmentor.com/resources/articles/granularity.pdf。これを読んで、循環依存がなぜ悪いことなのかを理解してください。

于 2010-01-12T21:41:42.790 に答える
16

プロジェクトをリファクタリングして、共通の要素をプロジェクト#1とプロジェクト#2の両方が参照する「プロジェクト#0」に取り出します。

于 2010-01-12T21:37:57.210 に答える
7

2つを1つにマージするか、再設計します。

于 2010-01-12T21:37:11.813 に答える
5

これは、設計に問題があることを示しています。2つ以上のタイプが相互に認識している必要がある場合は、それらが同じアセンブリに存在する必要があります。

于 2010-01-12T21:37:48.040 に答える
3

いいえ。プロジェクトを適切に構成します。抽象化に基づいたある種の順序付け(低レベルから高レベル)を使用してみてください。

于 2010-01-12T21:37:41.223 に答える
3

循環依存とは、これらが 2 つの独立したプロジェクトではなくなったことを意味します (1 つだけをビルドすることは不可能であるため)。

一方向の依存関係のみを持つようにリファクタリングするか、それらを単一のプロジェクトにマージする必要があります。

于 2010-01-12T21:39:21.660 に答える
3

前の質問に見られるように循環参照を行うことができますが、ここで既に述べた理由により、循環参照を行うべきではありません。

于 2010-01-12T22:30:07.307 に答える
2

は本当に賢い人になるつもりはありませんが、より良いプログラム設計がその答えです。

于 2010-01-12T21:37:58.633 に答える
1

これは設計上の欠陥のようで、他には何もありません。再設計が解決策です。

于 2010-01-13T05:11:42.460 に答える
-4

それは良い解決策だとは思いませんが、それでも次の手順に従うことで解決できます

  • 参照を追加する
  • ブラウズして
  • dll プロジェクトの Debug フォルダに移動し、
  • .dll を見つけて追加します。
于 2013-03-29T13:42:13.267 に答える