Я хочу создать свойство, которое может найти глубину вложенной древовидной структуры. Ниже статические узнают глубину/уровень путем рекурсии. Но возможно ли сделать эту функцию как свойство в одном классе вместо статического метода?Найти максимальную глубину/уровень вложенной коллекции
public static int GetDepth(MenuGroup contextMenuItems)
{
if (contextMenuItems == null || contextMenuItems.Items.Count == 0)
return 0;
var subMenu = contextMenuItems.Items.Select(b => b as MenuGroup);
if (!subMenu.Any())
return 1;
var subLevel = subMenu.Cast<MenuGroup>().Select(GetDepth);
return !subLevel.Any() ? 1 : subLevel.Max() + 1;
}
Некоторые подробнее о коде: MenuGroup и MenuItem получены из MenuBase
MenuGroup имеет дочерние узлы с ObservableCollection<MenuBase> Items
как элементы детского
MenuItem это уездный узел без какого-либо дочернего элемента.
Вы можете сделать свойство как это: ' public int Depth {get {return GetDepth (something);} private set;} 'что-то такое, что MenuGroup. Вы можете сделать метод частным и нестатичным и использовать 'this' в этом методе. – wudzik