Вложенная иерархия объектов - PullRequest
4 голосов
/ 14 июня 2011

У меня есть объект, который может иметь родителей и детей одного и того же типа.Есть ли стандартизированный способ реализации этого шаблона?

Что-то вроде:

public class Nested
{
   public string Name {get; set;}

   public List<Nested> Parents {get {TODO}}
   public List<Nested> Children {get {TODO}}
}

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

Взгляните на составной шаблон здесь

1 голос
/ 14 июня 2011

С точки зрения памяти, похоже, что любой экземпляр вашего класса должен будет рекурсивно фильтровать все, чтобы выяснить, каковы отношения. Это обременительно.

Я бы рекомендовал просто дать вашему классу свойство, подобное этому (или что-то более сложное, в зависимости от того, что вы хотите достичь):

public Nested parent;

Это превратило бы его в связанный список. Вы можете отдельно создать метод вне класса, который сможет найти родителей на основе ограниченного набора параметров (например, FindParentsOfNestedToCertainGeneration (int numOfGenerations, Nested child) - это просто перейдет к child и пойдет по цепочке родителей в " родительская собственность).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...