questo deve essere uno scenario talmente comune che è già stato scritto molto, speriamo anche in uno schema davvero valido. Ho un modello di dominio in cui un contenitore personalizzato contiene entità. Per esempio (proprietà e interfacce esclusi per brevità):Evita il riferimento circolare nel modello di 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);
}
}
posso ora facilmente attraversare mio oggetto grafico entrambi i modi, ma hanno creato un riferimento circolare. Vuoi creare un terzo tipo per divorziare dalle dipendenze?
Grazie in anticipo
Il modello in uso non consente una relazione inversa per più di un contenitore padre, quindi molto probabilmente non funzionerà allo stesso modo se si dispone di un'entità in più contenitori. – workmad3
puoi chiarire come è circolare? stai creando una struttura ad albero per quanto ne so, quindi non vedo da dove proviene la circolarità da – RobV
Entity ha un riferimento a EntityContainer e EntityContainer ha un riferimento a Entity. – ng5000