Итак, у меня есть эти классы, которые предоставляют коллекцию дочерних объектов.
Я не хочу, чтобы другие классы добавляли или удаляли объекты из коллекций, потому что мне нужно подключаться к событиям в дочерних объектах, поэтому по мере их добавления или удаления я хочу иметь возможность выполнять дополнительную обработку. Но мне очень нравится простота внутреннего управления дженериками.
Я упоминал, что это приложение WPF, поэтому мне нужно INotifySupport?
Лучшее, что я могу придумать, - это что-то вроде этого.
public class foo : INotifyPropertyChanged
{
protected List<ChildFoo> _Children = new List<ChildFoo>();
public foo()
{
}
public void AddChild(ChildFoo newChild)
{
DoAttachLogic(newChild);
_Children.Add(newChild);
NotifyPropertyChange("Children");
}
public void RemoveChild(ChildFoo oldChild)
{
DoRemoveLogic(oldChild);
_Children.Remove(oldChild);
NotifyPropertyChange("Children");
}
public ChildFoo[] Children
{
get
{
return _Children.ToArray();
}
}
}
Есть ли серьезные недостатки с этот дизайн, который я не вижу?
Каждый раз, когда осуществляется доступ к свойству Children, мы получаем накладные расходы на преобразование списка в массив.
Любой совет по этому поводу был бы отличным.