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