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 つのホワイト ブックで公開されています。