1 namespace System.Web.Mvc {
3 using System.Collections.Generic;
4 using System.Collections.ObjectModel;
7 public class ValueProviderFactoryCollection : Collection<ValueProviderFactory> {
8 private IResolver<IEnumerable<ValueProviderFactory>> _serviceResolver;
10 public ValueProviderFactoryCollection() {
11 _serviceResolver = new MultiServiceResolver<ValueProviderFactory>(() => Items);
14 public ValueProviderFactoryCollection(IList<ValueProviderFactory> list)
16 _serviceResolver = new MultiServiceResolver<ValueProviderFactory>(() => Items);
19 internal ValueProviderFactoryCollection(IResolver<IEnumerable<ValueProviderFactory>> serviceResolver, params ValueProviderFactory[] valueProviderFactories)
20 : base(valueProviderFactories) {
21 _serviceResolver = serviceResolver ?? new MultiServiceResolver<ValueProviderFactory>(
26 public IValueProvider GetValueProvider(ControllerContext controllerContext) {
27 var valueProviders = from factory in _serviceResolver.Current
28 let valueProvider = factory.GetValueProvider(controllerContext)
29 where valueProvider != null
32 return new ValueProviderCollection(valueProviders.ToList());
36 protected override void InsertItem(int index, ValueProviderFactory item) {
38 throw new ArgumentNullException("item");
40 base.InsertItem(index, item);
43 protected override void SetItem(int index, ValueProviderFactory item) {
45 throw new ArgumentNullException("item");
47 base.SetItem(index, item);