internal List <MethodInfo> GetMatchingAliasedMethods(ControllerContext controllerContext, string actionName) { // find all aliased methods which are opting in to this request // to opt in, all attributes defined on the method must return true var methods = from methodInfo in AliasedMethods let attrs = ReflectedAttributeCache.GetActionNameSelectorAttributes(methodInfo) where attrs.All(attr => attr.IsValidName(controllerContext, actionName, methodInfo)) select methodInfo; return(methods.ToList()); }
private static bool IsMatchingAliasedMethod(MethodInfo method, ControllerContext controllerContext, string actionName) { // return if aliased method is opting in to this request // to opt in, all attributes defined on the method must return true ReadOnlyCollection <ActionNameSelectorAttribute> attributes = ReflectedAttributeCache.GetActionNameSelectorAttributes(method); // Caching count is faster for ReadOnlyCollection int attributeCount = attributes.Count; // Performance sensitive, so avoid foreach for (int i = 0; i < attributeCount; i++) { if (!attributes[i].IsValidName(controllerContext, actionName, method)) { return(false); } } return(true); }