Я получил древовидную структуру в C #.
Каждый узел в дереве содержит ссылку на родителя и коллекцию детей.Процесс создания дочернего узла аналогично -
- Родительский узел создает дочерний элемент
- Дочерний выполняет всю свою логику конструктора
- После того, как дочерний узел имеетвыход из конструктора, его экземпляр добавляется в коллекцию дочерних элементов родителя, а свойство Parent дочернего объекта соответствующим образом обновляется.
До сих пор это прекрасно работало для меня.Я столкнулся с ситуацией, когда некоторым объектам требовалась ссылка на их родительский объект, уже находящийся в конструкторе, даже если у них его еще не было, и он получит его только после того, как выйдет из конструктора и будет добавлен в коллекцию своего родителя.(Как на этапе 3)
Я подумал о возможных решениях, в которых я не уверен -
Каждый родительский узел должен размножаться самому своему потомку при создании.Проблема в этом случае заключается в том, что конструкторы немного короче, но свойство Parent будет установлено дважды.Однажды на шаге 2 и еще раз на шаге 3.
Я подумал, что это должно быть распространенной проблемой, поэтому кто-то должен был найти лучшее решение.
Просто для общих знаний -эта древовидная структура основана на ViewModel для TreeView WPF.
Комментарии будут высоко оценены.
Спасибо!