Ejemplo n.º 1
0
        /// <summary>
        /// 加载指定程序集Action
        /// </summary>
        /// <param name="path"></param>
        public static List <AssemblyControllerResult> LoadAction(string path)
        {
            //无需加载的控制器列表
            var array = new string[] { "DefaultController", "BaseController", "FileController",
                                       "ManagerController", "LoginController" };
            var assembly        = Assembly.Load("WorkData.Web"); //加载程序集
            var controllerTypes = new List <Type>();             //创建控制器类型列表

            controllerTypes.AddRange(assembly.GetTypes().Where(type => typeof(IController).IsAssignableFrom(type) &&
                                                               !array.Contains(type.Name)));

            var assemblyControllerResultList = new List <AssemblyControllerResult>();

            //获取程序集下所有的类,通过Linq筛选继承IController类的所有类型
            foreach (var controllerType in controllerTypes)
            {
                var info = new AssemblyControllerResult
                {
                    ControllerName = controllerType.Name.Replace("Controller", "")
                };
                var actionList = controllerType.GetMethods().Where(method =>
                                                                   method.CustomAttributes.Any(x => x.AttributeType == typeof(ActionDescriptionAttribute)));

                foreach (var action in actionList)
                {
                    var actionDescriptionAttribute = action.GetCustomAttribute(typeof(ActionDescriptionAttribute)) as ActionDescriptionAttribute;
                    if (actionDescriptionAttribute == null)
                    {
                        continue;
                    }

                    var actionMethodAttribute = action.GetCustomAttribute(typeof(ActionMethodSelectorAttribute)) as ActionMethodSelectorAttribute;

                    var name     = actionMethodAttribute?.GetType().Name;
                    var dataInfo = new ActionDescriptionAttribute
                    {
                        Action = actionDescriptionAttribute.Action,
                        Name   = actionDescriptionAttribute.Name,
                        Method = name == null || name == "HttpGetAttribute" ? "Get" : "Post"
                    };
                    info.Actions.Add(dataInfo);
                }
                assemblyControllerResultList.Add(info);
            }

            return(assemblyControllerResultList);
        }
Ejemplo n.º 2
0
        public static string GetDescription(this ActionDescriptionAttribute self, Type controllertype)
        {
            string rv = "";

            if (string.IsNullOrEmpty(self.Description) == false)
            {
                if (Core.Program._Callerlocalizer[self.Description].ResourceNotFound == true)
                {
                    rv = Core.Program._localizer[self.Description];
                }
                else
                {
                    rv = Core.Program._Callerlocalizer[self.Description];
                }
            }
            return(rv);
        }
        public static string GetDescription(this ActionDescriptionAttribute self, Type controllertype)
        {
            string rv = "";

            if (string.IsNullOrEmpty(self.Description) == false)
            {
                if (Core.Program.Buildindll.Any(x => controllertype.FullName.StartsWith(x)))
                {
                    if (Core.Program._localizer != null)
                    {
                        rv = Core.Program._localizer[self.Description];
                    }
                }
                else
                {
                    if (Core.Program._Callerlocalizer != null)
                    {
                        rv = Core.Program._Callerlocalizer[self.Description];
                    }
                }
            }
            return(rv);
        }
Ejemplo n.º 4
0
 public static string GetDescription(this ActionDescriptionAttribute self, IBaseController controller)
 {
     return(self.GetDescription(controller.GetType()));
 }