remarks example cref c# visual-studio dependencies package-design

c# - example - Dependencias circulares



remarks c# (10)

Absolutamente no. Las dependencias circulares son una indicación de mal diseño. No quiero ser duro. Hay algunas formas de salir de esto.

1) Puede refactorizar código común a otro proyecto, decir Proyecto # 0

2) Puede arreglar su diseño, que probablemente sea el camino a seguir.

El tío Bob tiene un buen artículo sobre los principios de empaquetado que incluye el principio de las dependencias acíclicas. http://www.objectmentor.com/resources/articles/granularity.pdf . Lea esto para saber por qué las dependencias cíclicas son malas.

Tengo 2 proyectos.

El Proyecto # 2 tiene una referencia al Proyecto # 1

Ahora necesito hacer referencia al Proyecto # 2 en el Proyecto # 1, pero vs.net se queja de una dependencia circular.

¿Hay alguna forma de salir de esto?


Combina los dos en uno o rediseña.


Esto apunta a un problema en su diseño. Si existe una necesidad real de que dos o más de sus tipos conozcan mutuamente, entonces deberían existir en el mismo ensamblaje.


Esto parece ser un defecto de diseño, nada más. El rediseño es la solución.


La referencia circular se puede hacer como se vio en una pregunta anterior , pero no debe hacerlo por las razones que ya todos mencionaron aquí.


No creo que sea una buena solución, pero aún podemos hacerlo siguiendo estos pasos

  • agregar la referencia
  • navegar y
  • ir a la carpeta de depuración del proyecto dll,
  • encuentra el .dll y agrega.

No. Estructure sus proyectos apropiadamente. Intente utilizar algún tipo de orden basado en la abstracción: de bajo nivel a alto nivel.


Refactorice sus proyectos para llevar los elementos comunes a un "Proyecto n. ° 0" que hace referencia tanto al Proyecto n. ° 1 como al Proyecto n. ° 2.


Una dependencia circular significa que estos ya no son dos proyectos independientes (porque allí es imposible construir solo uno de ellos).

Necesita refactorizar para que solo tenga una dependencia de un solo sentido o debe fusionarlos en un único proyecto.


Realmente no quiero ser inteligente, pero un mejor diseño de programa es la respuesta.