【发布时间】:2013-08-22 01:46:29
【问题描述】:
我想创建一个可以找到嵌套树结构深度的属性。下面的静态通过递归找出深度/级别。但是是否可以将此函数作为同一个类中的属性而不是静态方法?
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