Итак, у меня есть эти классы, которые предоставляют коллекцию дочерних объектов.
Я не хочу, чтобы другие классы добавляли или удаляли объекты из коллекций, потому что мне нужно подключаться к событиям в дочерних объектах, чтобы по мере их добавления или удаления я хотел иметь возможность выполнять дополнительную обработку. Но я действительно люблю легкость манипулирования генериками внутри.
Я уже говорил, что это приложение 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, мы получаем издержки на преобразование списка в массив.
Любой совет по этому поводу был бы великолепен.