Ejemplo n.º 1
0
 /// <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);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 加载所有GenericMenuCat菜单到dict中
        /// </summary>
        public static void Load()
        {
            dict.Clear();
            Assembly assembly = Assembly.GetExecutingAssembly();

            foreach (MemberInfo memberInfo in assembly.GetCustomAttributeMemberInfos <GenericMenuItemAttribute>())
            {
                GenericMenuItemAttribute genericMenuItemAttribute =
                    memberInfo.GetCustomAttribute <GenericMenuItemAttribute>();
                GenericMenuCat genericMenuCat =
                    dict.GetOrAddDefault(genericMenuItemAttribute.rootName, () => new GenericMenuCat());
                genericMenuCat.InitOrUpdateRoot(genericMenuItemAttribute, (MethodInfo)memberInfo);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 更新该节点的信息
 /// </summary>
 /// <param name="genericMenuItemAttribute"></param>
 /// <param name="methodInfo"></param>
 public void Update(GenericMenuItemAttribute genericMenuItemAttribute, MethodInfo methodInfo)
 {
     if (this.priority > genericMenuItemAttribute.priority)
     {
         this.priority = genericMenuItemAttribute.priority;
     }
     if (genericMenuItemAttribute.names.Length - genericMenuItemAttribute.currentNameIndex >= 1)
     {
         SubNamesLengthGreaterThanOrEquals_1_Condition(genericMenuItemAttribute, methodInfo);
     }
     else
     {
         SubNamesLengthEquals_0_Condition(methodInfo, genericMenuItemAttribute);
     }
 }
Ejemplo n.º 4
0
        /// <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);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// subNamesLenght==0的情况
        /// </summary>
        /// <param name="methodInfo"></param>
        /// <param name="genericMenuItemAttribute"></param>
        public void SubNamesLengthEquals_0_Condition(MethodInfo methodInfo,
                                                     GenericMenuItemAttribute genericMenuItemAttribute)
        {
            if (methodInfo.ReturnType == typeof(bool))
            {
                this.methodInfoValidate = methodInfo;
            }
            else
            {
                this.methodInfo = methodInfo;
            }

            if (genericMenuItemAttribute.isValidate)
            {
                this.isValidate = true;
            }
        }