예제 #1
0
        /// <summary>
        /// 获取功能
        /// </summary>
        /// <param name="functionKey"></param>
        /// <returns></returns>
        public FunctionComponent GetFunction(string functionKey)
        {
            FunctionComponent function;

            if (FunctionDict.TryGetValue(functionKey, out function))
            {
                return(function);
            }

            return(null);
        }
예제 #2
0
        /// <summary>
        /// 是否具有访问指定控制ID的权限
        /// </summary>
        /// <param name="controlId">功能控制ID</param>
        /// <returns></returns>
        public bool HasFunction(string controlId)
        {
            bool result = false;

            if (string.IsNullOrEmpty(controlId))
            {
                result = true;
            }
            else if (FunctionDict != null && FunctionDict.ContainsKey(controlId))
            {
                result = true;
            }
            return(result);
        }
예제 #3
0
        /// <summary>
        /// 从权限键中获取对应的功能列表
        /// </summary>
        /// <param name="permissionKeys"></param>
        /// <returns></returns>
        public Dictionary <string, FunctionComponent> MapFunction(HashSet <string> permissionKeys)
        {
            var functions = new Dictionary <string, FunctionComponent>();

            foreach (string permissionKey in permissionKeys)
            {
                FunctionComponent function;
                if (FunctionDict.TryGetValue(permissionKey, out function))
                {
                    functions.Add(permissionKey, function);
                }
            }
            return(functions);
        }
예제 #4
0
        /// <summary>
        /// 注册功能到字典中
        /// </summary>
        /// <param name="component"></param>
        /// <exception cref="ArgumentException">不能注册重复的功能项</exception>
        private void RegisterFunctionDict(FunctionComponent component)
        {
            if (!string.IsNullOrEmpty(component.FunctionKey))
            {
                if (FunctionDict.ContainsKey(component.FunctionKey))
                {
                    throw new ArgumentException("不能注册重复的功能项");
                }

                FunctionDict.Add(component.FunctionKey, component);
            }

            if (component.ChildFunctionItems != null)
            {
                foreach (var childFunction in component.ChildFunctionItems)
                {
                    RegisterFunctionDict(childFunction);
                }
            }
        }