Reforçar o relacionamento pai-filho em C # e .Net

Vamos fazer as duas classes a seguir:

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

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

propriedade Parent @ Child deve sempre retornar o CollectionOfChildren em que o Child está ou nulo se o filho não estiver em uma coleção. Entre essas duas classes, esse invariante deve ser mantido e não deve ser quebrado (bem, facilmente) pelo consumidor da class

Como você implementa esse relacionamento? CollectionOfChildren não pode definir nenhum membro privado de Child, então como ele deve informar Child que ele foi adicionado à coleção? (Lançar uma exceção é aceitável se o filho já faz parte de uma coleção.)

Ointernal palavra-chave @ foi mencionada. Estou escrevendo um aplicativo WinForms no momento, então tudo está no mesmo assembly, e isso não é diferente depublic.

questionAnswers(8)

yourAnswerToTheQuestion