Entonces, en un modelo típico en el que tiene un padre que puede tener muchos hijos y un hijo que solo puede tener uno, ¿cómo gestiona la adición de hijos? He estado usando este enfoque;Práctica recomendada para el manejo de las colecciones padre e hijo NHibernate
public class Parent
{
public Parent()
{
Children = new List<Child>();
}
public IList<Child> Children
{
get;
private set;
}
}
public class Child
{
public Parent Parent
{
get;
set;
}
}
var child = new Child();
var parent = new Parent();
parent.Children.Add(child);
child.Parent = parent;
El problema es que en todas partes Quiero añadir un nuevo hijo que tengo que recordar que agregar una referencia tanto para el niño y el padre y es un poco de dolor. Solo podría agregar un método AddChild a la clase principal y hacer que el responsable de agregar hijos: el problema ahora es que hay 2 formas de agregar un elemento secundario a través de la propiedad y el método Children. Entonces, ¿esta es una mejor solución?
public class Parent
{
public Parent()
{
children = new List<Child>();
}
private IList<Child> children
{
get;
private set;
}
public IEnumerable<Child> Children
{
get
{
return children;
}
}
public void AddChild(Child child)
{
children.Add(child);
child.Parent = this;
}
}
¿Hay alguna guía para las mejores prácticas en esto, y qué haces?
esta es una buena solución, pero con el inconveniente de que si el consumidor emitiera Children to IList accedería a la lista y podría modificarla ... de otra manera podría estar utilizando ReadOnlyCollection <> –