/// <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); }
/// <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); }
/// <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); }
/// <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); } } }