Dies muss ein so häufiges Szenario sein, dass schon viel darüber geschrieben wurde, hoffentlich sogar ein wirklich gutes Muster. Ich habe ein Domänenmodell, in dem ein benutzerdefinierter Container Entitäten enthält. Zum Beispiel (Eigenschaften und Schnittstellen der Kürze halber nicht inbegriffen):Vermeiden Sie Zirkelverweis in Domain-Modell
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);
}
}
kann ich jetzt meine Objektgraphen leicht in beide Richtungen durchlaufen, haben aber einen zirkulären Verweis erstellt. Würden Sie einen dritten Typ erstellen, um die Abhängigkeiten zu trennen?
Vielen Dank im Voraus
Das Modell, das Sie dort haben, erlaubt keine umgekehrte Beziehung für mehr als einen übergeordneten Container, so dass es höchstwahrscheinlich nicht funktioniert, wenn Sie eine Entität in mehreren Containern haben. – workmad3
können Sie klären, wie das ist kreisförmig? Sie erstellen eine Baumstruktur so weit ich es verstehe, also sehe ich nicht, woher die Zirkularität kommt. – RobV
Entity hat einen Verweis auf EntityContainer und EntityContainer hat einen Verweis auf Entity. – ng5000