前面我们介绍了Filter的基本使用,但各种Filter要在合适的时机运行起来,需要预先准备好,现在看看ASP.NET MVC框架是怎么做的。
一.Filter集合
在ControlerActionInvoker的InvokeAction方法中,只有一行代码FilterInfo filterInfo = GetFilters(controllerContext, actionDescriptor), 把收集的Filter信息放到了FilterInfo中,我们来看看
访类型的定义:
1 public class FilterInfo 2 { 3 4 public FilterInfo(); 5 6 public FilterInfo(IEnumerable<Filter> filters); 7 8 9 public IList<IActionFilter> ActionFilters { get; } 10 public IList<System.Web.Mvc.Filters.IAuthenticationFilter> AuthenticationFilters { get; } 11 12 public IList<IAuthorizationFilter> AuthorizationFilters { get; } 13 14 public IList<IExceptionFilter> ExceptionFilters { get; } 15 16 public IList<IResultFilter> ResultFilters { get; } 17 }