Я разрабатываю библиотеку классов многократного использования, которая содержит 2 сборки (среди прочих) с именами core.xml.dll и core.string.dll.
Сборка xml ссылается на сборку строк, чтобы использовать некоторые вспомогательные методы.
Однако теперь есть строковый метод, в котором было бы полезно использовать метод, содержащийся в сборке xml.
Если я буду ссылаться на сборку xml из сборки строк, я создам циклическую зависимость и не смогу построить обе сборки из исходного кода. (т.е. проблема курицы и яйца).
Чтобы следовать принципу «Не повторяйся», я бы хотел избежать дублирования функций в обеих сборках. Если я обнаружил ошибку в реализации, я хочу исправить ее только в одном месте.
Хотя я мог бы объединить сборки в одну, это не идеал, так как это снижает связность сборки.
Мне нужно пересобрать и развернуть всю сборку только для небольшого изменения в определенном классе. Кроме того, в конечном итоге, с таким количеством зависимостей, я, вероятно, получу одну огромную библиотечную сборку.
Так что в контексте повторно используемого набора библиотечных сборок, какой лучший подход использовать здесь? Кроме того, как сама платформа .NET справляется с этой проблемой?
(В Reflector кажется, что System.Configuration.dll ссылается на System.XML.DLL и наоборот. Действительно ли это правильно, если да, то как управляется циклическая зависимость?)