este debe ser un escenario tan común que ya se ha escrito mucho sobre él, con suerte incluso un patrón realmente bueno. Tengo un modelo de dominio en el que un contenedor personalizado contiene entidades. Por ejemplo (propiedades e interfaces excluidos por razones de brevedad):Evite la referencia circular en el modelo de dominio
class Entity
{
public int Id;
public EntityContainer ParentContainer;
}
class EntityContainer
{
public int Id;
public IList<Entity> Entities = new List<Entity>();
public void AddEntity(Entity entity)
{
entity.ParentContainer = this;
Entities.Add(entity);
}
}
class Main
{
public Main()
{
Entity entity1 = new Entity();
Entity entity2 = new Entity();
EntityContainer entityContainer = new EntityContainer();
entityContainer.AddEntity(entity1);
entityContainer.AddEntity(entity2);
// Can now traverse graph easily, e.g.
Console.WriteLine("entity1's parent container ID = " + entity1.ParentContainer.Id);
Console.WriteLine("Container contains at least this entity ID: " + entityContainer.Entities[0].Id);
}
}
ahora puedo atravesar fácilmente mi gráfico de objetos en ambos sentidos, pero han creado una referencia circular. ¿Crearías un tercer tipo para divorciar las dependencias?
Gracias de antemano
El modelo que tiene allí no permite una relación inversa para más de un contenedor principal, por lo que lo más probable es que no funcione de la misma manera si tiene una entidad en varios contenedores. – workmad3
¿Puedes aclarar cómo es eso circular? está creando una estructura de árbol por lo que yo entiendo, así que no veo de dónde viene la circularidad – RobV
Entidad tiene una referencia a EntityContainer y EntityContainer tiene una referencia a Entidad. – ng5000