Обеспечение родительско-дочерних отношений в C # и .Net

Давайте возьмем следующие два класса:

public class CollectionOfChildren
{
    public Child this[int index] { get; }
    public void Add(Child c);
}

public class Child
{
    public CollectionOfChildren Parent { get; }
}

Свойство Parent дочернего объекта всегда должно возвращать коллекцию CollectionOfChildren, в которой находится дочерний объект, или значение NULL, если дочерний элемент отсутствует в такой коллекции. Между этими двумя классами этот инвариант должен поддерживаться и не должен быть взломан (ну, легко) потребителем класса.

Как вы реализуете такие отношения? CollectionOfChildren не может установить ни одного из закрытых членов Child, так как же он должен сообщить Child, что он был добавлен в коллекцию? (Бросок исключения допустим, если ребенок уже является частью коллекции.)

internal ключевое слово было упомянуто. Я сейчас пишу приложение для WinForms, так что все в одной сборке, и это, по сути, ничем не отличается отpublic.

Ответы на вопрос(3)

Ваш ответ на вопрос