Добавьте к ответу Лукаса: очень сложно придумать круговую зависимость сборка в .NET.Чтобы скомпилировать A.dll
, сначала нужно B.dll
;для компиляции B.dll
сначала нужно C.dll
;но для компиляции C.dll
вам нужны A.dll
, которые вы пытались скомпилировать в первую очередь.
Единственный способ, которым вы можете попасть в эту ситуацию, - это если вы разрабатываете A, B иC параллельно, и вам удалось ввести циклическую зависимость случайно.Но как только вы выполните чистую сборку из всех трех, проблема станет очевидной, и вы не сможете продолжить, пока не разорвете цикл.
Круговые зависимости между пространствами имен и / или классами внутриодиночные зависимости встречаются гораздо чаще.Я пытаюсь рассматривать этот тип циклической зависимости как запах кода;кодовая база без циклических зависимостей между компонентами - это та, в которой эти компоненты можно легко хранить отдельно и подвергать рефакторингу независимо.
Патрик Смаккья (сотрудник NDepend) немного говорит о циклах зависимостей и их влиянии на качество кода:*http://codebetter.com/blogs/patricksmacchia/archive/2009/07/29/maintainability-learnability-component-layering.aspx