Estoy luchando para evitar dependencias cíclicas. Sé que necesito ocultar la implementación con interfaces, pero ¿cómo manejo una situación con dos ensamblajes, donde cada uno necesita crear instancias de clases desde el otro o llamar a un método estático desde allí?Dependencias cíclicas - una vez más
Editar:
entiendo esto se puede solucionar mediante el uso de un solo montaje. Tenemos más de uno por el siguiente motivo:
- Nuestro "sistema" se compone de varios componentes. Un cliente puede tener solo un componente, o más, así que lo que hicimos fue crear diferentes ensambles para diferentes componentes. Tiene sentido, ¿por qué desplegarías cosas que no necesitas? ¿No es una pérdida de memoria?
- cosas que eran comunes a más componentes, principalmente clases de ayuda, fueron a otro ensamblado - una vez más no todos los componentes necesitan todas las clases auxiliares, entonces hay más ensambles
- sin embargo, estas dos aplicaciones pueden comunicarse entre sí - el sistema para los médicos envía solicitudes al sistema para las enfermeras, las solicitudes van a volver, etc. - y aquí es donde el problema real es
Tener los dos componentes que hablan entre sí en realidad es sólo una de las situaciones que hemos tenido una dependencia cíclica entra en conflicto antes. Ocurre de vez en cuando y, cuando sucede, necesitamos resolver cómo resolverlo, mover algunas clases y, a veces, necesitamos agregar un nuevo ensamblaje.
Ahora tenemos como 8-10 ensamblajes, y parece que cuanto más tenga, más rápido se agregarán :) - por ejemplo, agregamos una función de propósito general que usa atributos personalizados - así que agregamos otro ensamblaje solo para el atributo - en caso de que no entre en conflicto en el futuro
¿Es este el camino a seguir? Realmente siento que estamos haciendo algo fundamentalmente erróneo :)
Realmente agradezco su opinión.
No estoy seguro de haberlo explicado suficientemente bien. Tal vez deberías simplemente usar un ensamblaje. –
Por favor, edite la pregunta para incluir el contexto del dominio y/o algún código de muestra. –