Ya no tienes que indagar más por todo internet porque llegaste al espacio correcto, poseemos la respuesta que quieres sin problema.
Solución:
En la mayoría de los casos, cuando tuve que hacer que dos cosas se hicieran referencia entre sí, creé una interfaz para eliminar la referencia circular. Por ejemplo:
ANTES DE
public class Foo
Bar myBar;
public class Bar
Foo myFoo;
Gráfico de dependencia:
Foo Bar
^ ^
| |
Bar Foo
Foo depende de Bar, pero Bar también depende de Foo. Si están en ensamblajes separados, tendrá problemas para construir, especialmente si realiza una reconstrucción limpia.
DESPUÉS
public interface IBar
public class Foo
IBar myBar;
public class Bar : IBar
Foo myFoo;
Gráfico de dependencia:
Foo, IBar IBar
^ ^
| |
Bar Foo
Tanto Foo como Bar dependen de IBar. No hay dependencia circular, y si IBar se coloca en su propio ensamblaje, Foo y Bar en ensamblajes separados ya no serán un problema.
Le diría a tu amigo que necesita repensar su diseño. Las referencias circulares como las que usted describe son a menudo un olor a código de una falla de diseño.
A diferencia de C++ (por ejemplo), C# no necesita declaraciones de reenvío para resolver referencias circulares. Por eso:
public class A
public B B get;set;
public class B
public A A get;set;
Sin embargo, esto suele ser un indicador de decisiones de diseño cuestionables.
Valoraciones y comentarios
Puedes añadir valor a nuestro contenido colaborando tu veteranía en las notas.