namespace System.Web.Mvc { using System.Collections.Generic; using System.Linq; public class FilterInfo { private List _actionFilters = new List(); private List _authorizationFilters = new List(); private List _exceptionFilters = new List(); private List _resultFilters = new List(); public FilterInfo() { } public FilterInfo(IEnumerable filters) { // evaluate the 'filters' enumerable only once since the operation can be quite expensive var filterInstances = filters.Select(f => f.Instance).ToList(); _actionFilters.AddRange(filterInstances.OfType()); _authorizationFilters.AddRange(filterInstances.OfType()); _exceptionFilters.AddRange(filterInstances.OfType()); _resultFilters.AddRange(filterInstances.OfType()); } public IList ActionFilters { get { return _actionFilters; } } public IList AuthorizationFilters { get { return _authorizationFilters; } } public IList ExceptionFilters { get { return _exceptionFilters; } } public IList ResultFilters { get { return _resultFilters; } } } }