1 // Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information. 2 3 using System.Collections; 4 using System.Collections.Generic; 5 using System.Linq; 6 7 namespace System.Web.Http.Filters 8 { 9 public class HttpFilterCollection : IEnumerable<FilterInfo> 10 { 11 private readonly List<FilterInfo> _filters = new List<FilterInfo>(); 12 13 public int Count 14 { 15 get { return _filters.Count; } 16 } 17 Add(IFilter filter)18 public void Add(IFilter filter) 19 { 20 if (filter == null) 21 { 22 throw Error.ArgumentNull("filter"); 23 } 24 25 AddInternal(new FilterInfo(filter, FilterScope.Global)); 26 } 27 AddInternal(FilterInfo filter)28 private void AddInternal(FilterInfo filter) 29 { 30 _filters.Add(filter); 31 } 32 Clear()33 public void Clear() 34 { 35 _filters.Clear(); 36 } 37 Contains(IFilter filter)38 public bool Contains(IFilter filter) 39 { 40 return _filters.Any(f => f.Instance == filter); 41 } 42 GetEnumerator()43 public IEnumerator<FilterInfo> GetEnumerator() 44 { 45 return _filters.GetEnumerator(); 46 } 47 IEnumerable.GetEnumerator()48 IEnumerator IEnumerable.GetEnumerator() 49 { 50 return GetEnumerator(); 51 } 52 Remove(IFilter filter)53 public void Remove(IFilter filter) 54 { 55 _filters.RemoveAll(f => f.Instance == filter); 56 } 57 } 58 } 59