public IEnumerable<FunctionDto> Invoke(Type target)
        {
            var result = new List<FunctionDto>();

            var targetType = target;

            if (!targetType.IsDefined(typeof(SystemModelAttribute), false))
            {
                return result;
            }

            var methods = targetType.GetMethods();
            var functionPermissionValue =
                (from methodInfo in methods
                 where methodInfo.IsDefined(typeof(PermissionSettingAttribute), false)
                 select methodInfo.GetCustomAttribute<PermissionSettingAttribute>()).Aggregate(
                     PermissionValue.None,
                     (current, permissionSetting) => current | permissionSetting.PermissionValue);

            var description = targetType.GetCustomAttribute<SystemModelAttribute>();
            var areaName = this.GetArea(target);
            var function = new FunctionDto()
                               {
                                   FunctionName = description.Name,
                                   ModelName = areaName,
                                   PermissionValue = functionPermissionValue
                               };
            result.Add(function);

            return result;
        }
        /// <summary>
        /// 解析Controller类型来收集Attribute信息.
        /// </summary>
        /// <param name="target">
        /// The target.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable"/>.
        /// </returns>
        public IEnumerable<FunctionDto> Invoke(Type target)
        {
            var result = new List<FunctionDto>();

            var targetType = target;

            // 是否使用SystemModelAttribute
            if (!targetType.IsDefined(typeof(SystemModelAttribute), false))
            {
                return result;
            }

            // 获取所有Controller里的方法
            var methods = targetType.GetMethods();

            // 获取功能模块的具体权限,必须是使用了PermissionSettingAttribute定义权限值,并取所有功能的并运算
            // 例如:一个Controller里只定义了Create和Edit,那么这个功能模块的权限就是 Create|Edit
            var functionPermissionValue =
                (from methodInfo in methods
                 where methodInfo.IsDefined(typeof(PermissionSettingAttribute), false)
                 select methodInfo.GetCustomAttribute<PermissionSettingAttribute>()).Aggregate(
                     PermissionValue.None,
                     (current, permissionSetting) => current | permissionSetting.PermissionValue);

            // 获取SystemModelAttribute具体的信息
            var description = targetType.GetCustomAttribute<SystemModelAttribute>();
            var areaName = this.GetArea(target);

            var function = new FunctionDto()
                               {
                                   FunctionName = description.Name,
                                   ModelName = areaName,
                                   PermissionValue = functionPermissionValue
                               };
            result.Add(function);

            return result;
        }