* Use PropertyHelper.SetValue in DefaultControllerActionArgumentBinder
* Update DefaultModelMetadataProvider to use delegates exposed on PropertyHelper instance. Fixes #2355
This commit is contained in:
parent
6223aac9be
commit
18efefd5cf
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue