Возможно наличие двух сборок взаимно зависимых (например, System.dll
и System.Configuration.dll
зависит друг от друга в .NET Fx). Но, как вы, возможно, испытали, вы должны упорно работать против визуального исполнения студии, чтобы избежать этого.
Ясно ациклический зависимостей между узлами является целью, которую вы должны достичь. Кроме того, ваши сборки не могут быть разработаны, скомпилированы и протестированы независимо.
Общая парадигма заключается в том, что BusinessLogic
использует DataAccess
, а не наоборот.Если вы хотите DataAccess
, чтобы иметь возможность перезвонить BusinessLogic
обычный способ сделать так:
- Определения перезвонить интерфейс в
DataAccess
сборке
- Реализовать этот обратный вызов интерфейс в
BusinessLogic
сборке (отсюда ссылки BusinessLogic
сборки DataAccess
сборки, но не наоборот)
- проход один или несколько объектов, которые реализуют этот интерфейс, от
BusinessLogic
к DataAccess
, посредством способа, определенного в DataAccess
, который принимает обратного вызова, как интерфейс PARAMET э.
Имея DataAccess
, чтобы иметь возможность перезвонить BusinessLogic
не запрещенная вещь, но вы должны задаться вопросом себя о том, почему вы хотите, чтобы сделать это, и вы должны попытаться ограничить эти числа вызовов спинок к строгой минимум.
Лично я хотел бы пойти дальше, рассмотрят пространство имен при сборке в качестве компонентов, имеет ациклическую зависимость пространства имен, следует избегать использования сборки артефакта для определения компонентов. Это показано в двух белых книгах, которые я написал, доступных here.