Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/aspnetwebstack.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/System.Web.Mvc/ReflectedParameterBindingInfo.cs')
-rw-r--r--src/System.Web.Mvc/ReflectedParameterBindingInfo.cs62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/System.Web.Mvc/ReflectedParameterBindingInfo.cs b/src/System.Web.Mvc/ReflectedParameterBindingInfo.cs
new file mode 100644
index 00000000..27254f2d
--- /dev/null
+++ b/src/System.Web.Mvc/ReflectedParameterBindingInfo.cs
@@ -0,0 +1,62 @@
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Globalization;
+using System.Reflection;
+using System.Web.Mvc.Properties;
+
+namespace System.Web.Mvc
+{
+ internal class ReflectedParameterBindingInfo : ParameterBindingInfo
+ {
+ private readonly ParameterInfo _parameterInfo;
+ private ICollection<string> _exclude = new string[0];
+ private ICollection<string> _include = new string[0];
+ private string _prefix;
+
+ public ReflectedParameterBindingInfo(ParameterInfo parameterInfo)
+ {
+ _parameterInfo = parameterInfo;
+ ReadSettingsFromBindAttribute();
+ }
+
+ public override IModelBinder Binder
+ {
+ get
+ {
+ IModelBinder binder = ModelBinders.GetBinderFromAttributes(_parameterInfo,
+ () => String.Format(CultureInfo.CurrentCulture, MvcResources.ReflectedParameterBindingInfo_MultipleConverterAttributes,
+ _parameterInfo.Name, _parameterInfo.Member));
+
+ return binder;
+ }
+ }
+
+ public override ICollection<string> Exclude
+ {
+ get { return _exclude; }
+ }
+
+ public override ICollection<string> Include
+ {
+ get { return _include; }
+ }
+
+ public override string Prefix
+ {
+ get { return _prefix; }
+ }
+
+ private void ReadSettingsFromBindAttribute()
+ {
+ BindAttribute attr = (BindAttribute)Attribute.GetCustomAttribute(_parameterInfo, typeof(BindAttribute));
+ if (attr == null)
+ {
+ return;
+ }
+
+ _exclude = new ReadOnlyCollection<string>(AuthorizeAttribute.SplitString(attr.Exclude));
+ _include = new ReadOnlyCollection<string>(AuthorizeAttribute.SplitString(attr.Include));
+ _prefix = attr.Prefix;
+ }
+ }
+}