Я пытаюсь создать древовидную структуру родителей и детей. Проблема заключается в том, что я только хочу, чтобы иметь возможность Asign родителя ребенка в дочерних и родительских классах, и нигде больше:Структура деревьев с родителями и детьми
public class Parent
{
public static Parent Root = new Parent();
private List<Child> children = new List<Child>();
public ReadOnlyCollection<Child> Children
{
get { return children.AsReadOnly(); }
}
public void AppendChild(Child child)
{
child.Parent.RemoveChild(child);
child.children.Add(child);
child.Parent = this; //I need to asign the childs parent in some way
}
public void RemoveChild(Child child)
{
if (this.children.Remove(child))
{
child.Parent = Parent.Root; //here also
}
}
}
public class Child : Parent
{
private Parent parent = Parent.Root;
public Parent Parent
{
get { return this.parent; }
private set { this.parent = value; } //nothing may change the parent except for the Child and Parent classes
}
}
By A # программиста не-C, мне сказали, чтобы использовать друг (например, в C++), но они не реализованы на C#, и все мои другие решения не удались.
Попробуйте использовать защищенные. – idstam
Как это поможет? – zmbq
Охраняемая является одной из вещей, которые я уже пробовал, но я не могу использовать защищенное поле другого экземпляра родителя, а не самого себя в дочернем классе. – Safron