Nuestro proyecto actual se ha topado con un problema de dependencia circular. Nuestro ensamblaje de lógica de negocios utiliza clases y métodos estáticos de nuestro ensamblado SharedLibrary. SharedLibrary contiene un montón de funciones auxiliares, como una clase de SQL Reader, enumeradores, variables globales, manejo de errores, registro y validación.Solución de Dependencia Circular
SharedLibrary necesita acceso a los objetos Business, pero los objetos Business necesitan acceso a SharedLibrary. Los antiguos desarrolladores resolvieron este obvio olor a código al replicar la funcionalidad de los objetos comerciales en la biblioteca compartida (muy anti-DRY). He pasado un día tratando de leer sobre mis opciones para resolver esto, pero estoy llegando a un callejón sin salida.
Estoy abierto a la idea del rediseño de la arquitectura, pero solo como último recurso. Entonces, ¿cómo puedo tener una Biblioteca de Ayuda Compartida que pueda acceder a los objetos comerciales, con los objetos de negocio que todavía acceden a la Biblioteca de Ayuda Compartida?
la pregunta obvia es: ¿Por qué necesita el acceso a los objetos de negocio la biblioteca compartida? Si puede responder eso, tendrá una solución. – Aaronaught
SharedLibrary tiene una clase de variable global abstracta llena de propiedades estáticas. Estas propiedades se crean a partir de los valores de la base de datos, de ahí la necesidad de objetos comerciales, este es solo un ejemplo de muchos. Y, por supuesto, los objetos Business necesitan acceso a esas constantes. – gfoley
Es por eso que nunca uso términos vagos como "compartido" para describir una biblioteca. ¿Qué es lo que hace? Lo que usted llama una biblioteca compartida claramente tiene demasiadas responsabilidades, y tal vez la biblioteca de objetos comerciales también lo haga. Típicamente, estas soluciones se resuelven poniendo las clases/interfaces verdaderamente * independientes * en su propia biblioteca. – Aaronaught