* Use PropertyHelper.SetValue in DefaultControllerActionArgumentBinder

* Update DefaultModelMetadataProvider to use delegates exposed on
  PropertyHelper instance.

Fixes #2355
This commit is contained in:
Pranav K 2015-04-15 17:03:15 -07:00
parent 6223aac9be
commit 18efefd5cf
2 changed files with 5 additions and 5 deletions

View File

@ -71,15 +71,15 @@ namespace Microsoft.AspNet.Mvc
var propertyHelpers = PropertyHelper.GetProperties(controller); var propertyHelpers = PropertyHelper.GetProperties(controller);
foreach (var property in properties) foreach (var property in properties)
{ {
var propertyHelper = propertyHelpers.First(helper => helper.Name == property.Key); var propertyHelper = propertyHelpers.First(helper =>
string.Equals(helper.Name, property.Key, StringComparison.Ordinal));
if (propertyHelper.Property == null || !propertyHelper.Property.CanWrite) if (propertyHelper.Property == null || !propertyHelper.Property.CanWrite)
{ {
// nothing to do // nothing to do
return; return;
} }
var setter = PropertyHelper.MakeFastPropertySetter(propertyHelper.Property); propertyHelper.SetValue(controller, property.Value);
setter(controller, property.Value);
} }
} }

View File

@ -121,14 +121,14 @@ namespace Microsoft.AspNet.Mvc.ModelBinding.Metadata
var propertyEntry = new DefaultMetadataDetails(propertyKey, attributes); var propertyEntry = new DefaultMetadataDetails(propertyKey, attributes);
if (propertyHelper.Property.CanRead && propertyHelper.Property.GetMethod?.IsPublic == true) if (propertyHelper.Property.CanRead && propertyHelper.Property.GetMethod?.IsPublic == true)
{ {
propertyEntry.PropertyGetter = PropertyHelper.MakeFastPropertyGetter(propertyHelper.Property); propertyEntry.PropertyGetter = propertyHelper.ValueGetter;
} }
if (propertyHelper.Property.CanWrite && if (propertyHelper.Property.CanWrite &&
propertyHelper.Property.SetMethod?.IsPublic == true && propertyHelper.Property.SetMethod?.IsPublic == true &&
!key.ModelType.IsValueType()) !key.ModelType.IsValueType())
{ {
propertyEntry.PropertySetter = PropertyHelper.MakeFastPropertySetter(propertyHelper.Property); propertyEntry.PropertySetter = propertyHelper.ValueSetter;
} }
propertyEntries.Add(propertyEntry); propertyEntries.Add(propertyEntry);