internal IEnumerable <FilterAttribute> GetFilterAttributes(bool useCache) { if (useCache) { return(ReflectedAttributeCache.GetMethodFilterAttributes(this.MethodInfo)); } return(this.GetCustomAttributes(typeof(FilterAttribute), true).Cast <FilterAttribute>()); }
internal IEnumerable <FilterAttribute> GetFilterAttributes(bool useCache) { if (useCache) { return(ReflectedAttributeCache.GetTypeFilterAttributes(this.ControllerType)); } return(this.GetCustomAttributes(typeof(FilterAttribute), true).Cast <FilterAttribute>()); }
/// <summary> /// 查找别名匹配的方法 /// </summary> /// <param name="controllerContext"></param> /// <param name="actionName"></param> /// <returns></returns> internal List <MethodInfo> GetMatchingAliasedMethods(ControllerContext controllerContext, string actionName) { IEnumerable <MethodInfo> source = from methodInfo in this.AliasedMethods let attrs = ReflectedAttributeCache.GetActionNameSelectorAttributes(methodInfo) where attrs.All((ActionNameSelectorAttribute attr) => attr.IsValidName(controllerContext, actionName, methodInfo)) select methodInfo; return(source.ToList <MethodInfo>()); }
/// <summary> /// 根据url获取类型 /// </summary> /// <param name="url"></param> /// <returns></returns> private Tuple <Type, MethodInfo> GetTypeByUrl(string url) { ControllerTypeCache.EnsureInitialized(); foreach (var type in ControllerTypeCache.AllTypes) { foreach (var method in type.GetMethods(ActionBindingFlags)) { foreach (var attr in ReflectedAttributeCache.GetPageUrlAttributes(method)) { base.Cache[attr.UniqueId] = new Tuple <Type, MethodInfo>(type, method); } } } Tuple <Type, MethodInfo> result; base.Cache.TryGetValue(url, out result); return(result); }
/// <summary> /// 获取PageUrlAttribute 属性 /// </summary> /// <param name="methodInfo"></param> /// <returns></returns> public static ICollection <PageUrlAttribute> GetPageUrlAttributes(MethodInfo methodInfo) { return(ReflectedAttributeCache.GetAttributes <MethodInfo, PageUrlAttribute>(ReflectedAttributeCache._methodPageUrlAttributeCache, methodInfo)); }
public static ICollection <ActionNameSelectorAttribute> GetActionNameSelectorAttributes(MethodInfo methodInfo) { return(ReflectedAttributeCache.GetAttributes <MethodInfo, ActionNameSelectorAttribute>(ReflectedAttributeCache._actionNameSelectorAttributeCache, methodInfo)); }
public static ICollection <FilterAttribute> GetMethodFilterAttributes(MethodInfo methodInfo) { return(ReflectedAttributeCache.GetAttributes <MethodInfo, FilterAttribute>(ReflectedAttributeCache._methodFilterAttributeCache, methodInfo)); }
/// <summary> /// 获取筛选特性 /// </summary> /// <param name="type"></param> /// <returns></returns> public static ICollection <FilterAttribute> GetTypeFilterAttributes(Type type) { return(ReflectedAttributeCache.GetAttributes <Type, FilterAttribute>(ReflectedAttributeCache._typeFilterAttributeCache, type)); }
/// <summary> /// 筛选动作的执行者 /// </summary> /// <param name="controllerContext"></param> /// <param name="methodInfos"></param> /// <returns></returns> private static List <MethodInfo> RunSelectionFilters(ControllerContext controllerContext, List <MethodInfo> methodInfos) { List <MethodInfo> list = new List <MethodInfo>(); List <MethodInfo> list2 = new List <MethodInfo>(); foreach (MethodInfo methodInfo in methodInfos) { ICollection <ActionMethodSelectorAttribute> actionMethodSelectorAttributes = ReflectedAttributeCache.GetActionMethodSelectorAttributes(methodInfo); if (actionMethodSelectorAttributes.Count == 0) { list2.Add(methodInfo); } else { if (actionMethodSelectorAttributes.All((ActionMethodSelectorAttribute attr) => attr.IsValidForRequest(controllerContext, methodInfo))) { list.Add(methodInfo); } } } if (list.Count <= 0) { return(list2); } return(list); }