/// <summary> /// 添加过滤器 /// </summary> /// <param name="filter">过滤器</param> /// <exception cref="ArgumentNullException"></exception> /// <returns></returns> public static bool Add(IFilter filter) { if (filter == null) { throw new ArgumentNullException(); } if (filter.AllowMultiple == false) { var allFilters = ActionFilters.Cast <IFilter>().Concat(AuthorizationFilters).Concat(ExceptionFilters); if (allFilters.Any(item => item.GetType() == filter.GetType())) { return(false); } } var actionFilter = filter as IActionFilter; var authorizationFilter = filter as IAuthorizationFilter; var exceptionFilter = filter as IExceptionFilter; if (actionFilter != null) { ActionFilters = ActionFilters .Concat(new[] { actionFilter }) .OrderBy(item => item.Order); } if (authorizationFilter != null) { AuthorizationFilters = AuthorizationFilters .Concat(new[] { authorizationFilter }) .OrderBy(item => item.Order); } if (exceptionFilter != null) { ExceptionFilters = ExceptionFilters .Concat(new[] { exceptionFilter }) .OrderBy(item => item.Order); } return(true); }