/// <summary> /// 构造函数 /// </summary> /// <param name="parent"></param> /// <param name="genericMenuItemAttribute"></param> /// <param name="methodInfo"></param> public GenericMenuItemInfo(GenericMenuItemInfo parent, GenericMenuItemAttribute genericMenuItemAttribute, MethodInfo methodInfo) { name = genericMenuItemAttribute.names[genericMenuItemAttribute.currentNameIndex]; this.parent = parent; this.itemName = genericMenuItemAttribute.itemName; genericMenuItemAttribute.currentNameIndex++; Update(genericMenuItemAttribute, methodInfo); }
/// <summary> /// subNamesLenght>=1的情况 /// </summary> /// <param name="genericMenuItemAttribute"></param> /// <param name="methodInfo"></param> public void SubNamesLengthGreaterThanOrEquals_1_Condition(GenericMenuItemAttribute genericMenuItemAttribute, MethodInfo methodInfo) { string firstSubName = genericMenuItemAttribute.names[genericMenuItemAttribute.currentNameIndex]; GenericMenuItemInfo target = children.Find(e => e.name.Equals(firstSubName)); if (target == null) { children.Add(new GenericMenuItemInfo(this, genericMenuItemAttribute, methodInfo)); } else { genericMenuItemAttribute.currentNameIndex++; target.Update(genericMenuItemAttribute, methodInfo); } }
/// <summary> /// 获取NamePath,相对于relativeToNamePath /// </summary> /// <param name="relativeNamePath"></param> /// <returns></returns> public string GetNamePath(string relativeNamePath) { GenericMenuItemInfo iterator = this; StringBuilder sb = new StringBuilder(iterator.name); while (iterator.parent != null) { iterator = iterator.parent; if (iterator.name.Equals(relativeNamePath)) { break; } sb.Insert(0, string.Format("{0}/", iterator.name)); } return(sb.ToString()); }