Estoy diseñando una biblioteca de clases reutilizable que contiene 2 ensamblajes (entre otros) denominados core.xml.dll y core.string.dll.Dependencias circulares frente a DRY
El conjunto xml hace referencia al conjunto de cadenas para utilizar algunos métodos de ayuda de cadenas.
Sin embargo, ahora hay un método de cadena que se beneficiaría del uso de un método contenido en el conjunto xml.
Si hago referencia al conjunto xml del conjunto de cadenas, habrá creado una dependencia circular y no podré compilar ambos ensamblados a partir del código fuente. (es decir, el problema del pollo y el huevo).
Para seguir el principio de "No repita usted mismo" me gustaría evitar la duplicación de la funcionalidad en ambos conjuntos. Si encuentro un error en la implementación, solo quiero solucionarlo en un solo lugar.
Si bien podría fusionar los conjuntos en uno, esto no es ideal, ya que reduce la cohesión del conjunto.
Tendría que volver a construir y volver a implementar todo el conjunto solo por un pequeño cambio en una clase específica. Además, eventualmente, con tantas dependencias, probablemente terminaría con una gran biblioteca.
Entonces, en el contexto de un conjunto reutilizable de conjuntos de bibliotecas, ¿cuál es el mejor enfoque para usar aquí? Además, ¿cómo se maneja el .NET Framework con este problema?
(Reflector parece que hace referencia a System.Configuration.dll system.xml.dll y viceversa. Es esto realmente correcto, si es así cómo se gestiona la dependencia circular?)
Podría dar un ejemplo concreto de cómo un "... método de cadena que se beneficiaría de usar un método contenido en el conjunto xml." –
Estaba buscando un método de conversión que acepta XML y se convierte a un formato basado en cadenas. Sí, estoy pensando que esto específicamente podría manejarse de otra manera, sin embargo, todavía estoy interesado en la pregunta más general. – Ash
Buscar hasta el libro de John Lakos, "Diseño de software de C++ a gran escala". Mucho de ese material puede no ser aplicable a C#, pero profundiza en la arquitectura nivelada, que es exactamente a lo que responde su pregunta. – Tom