/// <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); }
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); }
public static string GetDescription(this ActionDescriptionAttribute self, IBaseController controller) { return(self.GetDescription(controller.GetType())); }