2 つのアセンブリを相互に依存させることができます (たとえばSystem.dll
、System.Configuration.dll
.NET Fx では相互に依存します)。しかし、経験したことがあるかもしれませんが、それを回避するには、Visual Studio の強制に対して懸命に取り組む必要があります。
アセンブリ間の明らかに非循環的な依存関係は、達成しなければならない目標です。そうしないと、アセンブリを個別に開発、コンパイル、およびテストすることはできません。
一般的なパラダイムは、それをBusinessLogic
使用することDataAccess
であり、その反対ではありません。DataAccess
コールバックできるようにしたい場合はBusinessLogic
、通常の方法で次のようにします。
DataAccess
アセンブリでコールバック インターフェイスを定義する
- このコールバック インターフェイスを
BusinessLogic
アセンブリに実装します (したがって、BusinessLogic
アセンブリはアセンブリを参照しますDataAccess
が、逆は参照しません)。
- このインターフェイスを実装する 1 つまたは複数のオブジェクトを から
BusinessLogic
に渡し、コールバック インターフェイスをパラメーターとして受け取る でDataAccess
定義されたメソッドを介して渡します。DataAccess
DataAccess
コールバックできるようにすることBusinessLogic
は禁止されていることではありませんが、なぜそれを行う必要があるのかを自問する必要があり、これらのコールバックの数を厳密に最小限に制限するようにしてください。
個人的には、アセンブリ内の名前空間をコンポーネントと見なし、非循環的な名前空間の依存関係を持ち、アセンブリ アーティファクトを使用してコンポーネントを定義することを避けることで、さらに進んでいきたいと考えています。これは、私が作成した 2 つのホワイト ブックで公開されています。