[Fixes #3230] Remove use of reflection in MutableObjectModelBinder
This commit is contained in:
parent
1ca25c48af
commit
6ba05add3f
|
|
@ -484,14 +484,6 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
|
||||||
throw new ArgumentNullException(nameof(propertyMetadata));
|
throw new ArgumentNullException(nameof(propertyMetadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
var bindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase;
|
|
||||||
var property = bindingContext.ModelType.GetProperty(propertyMetadata.PropertyName, bindingFlags);
|
|
||||||
|
|
||||||
if (property == null)
|
|
||||||
{
|
|
||||||
// Nothing to do if property does not exist.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!result.IsModelSet)
|
if (!result.IsModelSet)
|
||||||
{
|
{
|
||||||
|
|
@ -499,10 +491,10 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!property.CanWrite)
|
if (propertyMetadata.IsReadOnly)
|
||||||
{
|
{
|
||||||
// Try to handle as a collection if property exists but is not settable.
|
// Try to handle as a collection if property exists but is not settable.
|
||||||
AddToProperty(bindingContext, metadata, property, result);
|
AddToProperty(bindingContext, metadata, propertyMetadata, result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -520,11 +512,9 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
|
||||||
private void AddToProperty(
|
private void AddToProperty(
|
||||||
ModelBindingContext bindingContext,
|
ModelBindingContext bindingContext,
|
||||||
ModelMetadata modelMetadata,
|
ModelMetadata modelMetadata,
|
||||||
PropertyInfo property,
|
ModelMetadata propertyMetadata,
|
||||||
ModelBindingResult result)
|
ModelBindingResult result)
|
||||||
{
|
{
|
||||||
var propertyMetadata = modelMetadata.Properties[property.Name];
|
|
||||||
|
|
||||||
var target = propertyMetadata.PropertyGetter(bindingContext.Model);
|
var target = propertyMetadata.PropertyGetter(bindingContext.Model);
|
||||||
var source = result.Model;
|
var source = result.Model;
|
||||||
if (target == null || source == null)
|
if (target == null || source == null)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue