Merge pull request #249 from pcc/xgetinputfocus
[mono.git] / mcs / class / System.Web.Mvc3 / Mvc / ModelMetadataProviders.cs
1 namespace System.Web.Mvc {
2     public class ModelMetadataProviders {
3         private ModelMetadataProvider _currentProvider;
4         private static ModelMetadataProviders _instance = new ModelMetadataProviders();
5         private IResolver<ModelMetadataProvider> _resolver;
6
7         internal ModelMetadataProviders(IResolver<ModelMetadataProvider> resolver = null) {
8             _resolver = resolver ?? new SingleServiceResolver<ModelMetadataProvider>(
9                 () => _currentProvider,
10                 new DataAnnotationsModelMetadataProvider(),
11                 "ModelMetadataProviders.Current"
12             );
13         }
14
15         public static ModelMetadataProvider Current {
16             get {
17                 return _instance.CurrentInternal;
18             }
19             set {
20                 _instance.CurrentInternal = value;
21             }
22         }
23
24         internal ModelMetadataProvider CurrentInternal {
25             get {
26                 return _resolver.Current;
27             }
28             set {
29                 _currentProvider = value ?? new EmptyModelMetadataProvider();
30             }
31         }
32     }
33 }