4

私の .net ソリューションには 3 つのプロジェクトがあります。
メイン プロジェクトと 2 つのクラス ライブラリ プロジェクト。

クラス ライブラリ プロジェクトを相互参照する必要があることがわかりました。
それをしてもいいですか?それは安全ですか、それともいくつかの考慮事項がありますか?

4

4 に答える 4

4

プロジェクトが 1 つのソリューションにある場合、IDE では許可されません。それを混乱させる微妙な方法があります。ただし、アセンブリ参照がまだ利用できないため、ソリューションをゼロからビルドすることはできません (つまり、ビルド + リビルド)。これをリファクタリングします。おそらく、両方が参照できる 3 番目のアセンブリが必要です。

于 2011-01-03T16:54:50.813 に答える
3

循環参照は可能ですが(IDE 経由ではなく、コマンドラインといくつかのトリックを使用)、大きな問題です。それをしないでください!

一般的な型のアセンブリを追加するか、2 つのライブラリをマージします。

多くの点で、少ない方が簡単です...無数のdllは、純粋さを達成したことを意味するものではありません-それはただの混乱です。

于 2011-01-03T16:57:54.067 に答える
2

この問題に遭遇したとき、プロパティのみを持つクラスを作成しました。EmployeeCustomerProduct、何でもかまいません。これらのクラスは他のプロジェクトを参照する必要がないため、複数のプロジェクトでそれらを参照できます。

Employeeこれらのオブジェクト ( 、Customer、 )に属するメソッドProductは、他のプロジェクトの独自のクラスに入ります。

私がよく遭遇する状況の 1 つは、プレゼンテーション層、ビジネス層、およびデータ アクセス層の 3 層アプリケーションです。DAL でデータを取得し、BLL に返される Employee オブジェクトを作成する必要があります。Employee クラスが BLL にあり、プロパティとメソッドの両方を持っている場合、DAL に Employee オブジェクトを設定してそれを BLL に返す簡単な方法はありません。BLL には DAL への参照が必要なので、 DAL は BLL を参照できません。プロパティのみのクラス ( EmployeeCustomerProduct) を使用して別のプロジェクトを作成することは、この問題を解決する 1 つの方法です。

于 2011-01-03T16:54:45.280 に答える
1

「相互参照」とは、次のことを行うことを意味します。

1) プロジェクトMAINには、 LIBRARY-ALPHAおよびLIBRARY-BETAへの参照が含まれています。

2) プロジェクトLIBRARY-ALPHAにはLIBRARY-BETAへの参照が含まれています

3) プロジェクトLIBRARY-BETAにはLIBRARY-ALPHAへの参照が含まれています

いいえ。ALPHABETAをビルドするまで、 Visual Studio はMAINをビルドできません。BETAをビルドするまでALPHAをビルドすることはできません。また、 ALPHAをビルドするまでBETAをビルドすることはできません。したがって、何も構築できなくなります。

于 2011-01-03T16:56:39.040 に答える