Make uses of ObjectMethodExecutor internal
This commit is contained in:
parent
08965550ad
commit
42a4e9a143
|
|
@ -1,43 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Internal;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Internal
|
||||
{
|
||||
public static class ControllerActionExecutor
|
||||
{
|
||||
public static object[] PrepareArguments(
|
||||
IDictionary<string, object> actionParameters,
|
||||
ObjectMethodExecutor actionMethodExecutor)
|
||||
{
|
||||
var declaredParameterInfos = actionMethodExecutor.MethodParameters;
|
||||
var count = declaredParameterInfos.Length;
|
||||
if (count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var arguments = new object[count];
|
||||
for (var index = 0; index < count; index++)
|
||||
{
|
||||
var parameterInfo = declaredParameterInfos[index];
|
||||
object value;
|
||||
|
||||
if (!actionParameters.TryGetValue(parameterInfo.Name, out value))
|
||||
{
|
||||
value = actionMethodExecutor.GetDefaultValueForParameter(index);
|
||||
}
|
||||
|
||||
arguments[index] = value;
|
||||
}
|
||||
|
||||
return arguments;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.ExceptionServices;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Abstractions;
|
||||
|
|
@ -38,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
private ResultExecutingContext _resultExecutingContext;
|
||||
private ResultExecutedContext _resultExecutedContext;
|
||||
|
||||
public ControllerActionInvoker(
|
||||
internal ControllerActionInvoker(
|
||||
IControllerFactory controllerFactory,
|
||||
ParameterBinder parameterBinder,
|
||||
IModelMetadataProvider modelMetadataProvider,
|
||||
|
|
@ -761,7 +760,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
var executor = _executor;
|
||||
var controller = _controller;
|
||||
var arguments = _arguments;
|
||||
var orderedArguments = ControllerActionExecutor.PrepareArguments(arguments, executor);
|
||||
var orderedArguments = PrepareArguments(arguments, executor);
|
||||
|
||||
var diagnosticSource = _diagnosticSource;
|
||||
var logger = _logger;
|
||||
|
|
@ -1064,6 +1063,34 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
}
|
||||
}
|
||||
|
||||
private static object[] PrepareArguments(
|
||||
IDictionary<string, object> actionParameters,
|
||||
ObjectMethodExecutor actionMethodExecutor)
|
||||
{
|
||||
var declaredParameterInfos = actionMethodExecutor.MethodParameters;
|
||||
var count = declaredParameterInfos.Length;
|
||||
if (count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var arguments = new object[count];
|
||||
for (var index = 0; index < count; index++)
|
||||
{
|
||||
var parameterInfo = declaredParameterInfos[index];
|
||||
|
||||
if (!actionParameters.TryGetValue(parameterInfo.Name, out var value))
|
||||
{
|
||||
value = actionMethodExecutor.GetDefaultValueForParameter(index);
|
||||
}
|
||||
|
||||
arguments[index] = value;
|
||||
}
|
||||
|
||||
return arguments;
|
||||
}
|
||||
|
||||
|
||||
private enum Scope
|
||||
{
|
||||
Resource,
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
public struct ControllerActionInvokerState
|
||||
{
|
||||
public ControllerActionInvokerState(
|
||||
internal ControllerActionInvokerState(
|
||||
IFilterMetadata[] filters,
|
||||
ObjectMethodExecutor actionMethodExecutor)
|
||||
{
|
||||
|
|
@ -113,7 +113,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
public IFilterMetadata[] Filters { get; }
|
||||
|
||||
public ObjectMethodExecutor ActionMethodExecutor { get; set; }
|
||||
internal ObjectMethodExecutor ActionMethodExecutor { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
|
||||
var cacheState = _controllerActionInvokerCache.GetState(controllerContext);
|
||||
|
||||
context.Result = new ControllerActionInvoker(
|
||||
var invoker = new ControllerActionInvoker(
|
||||
_controllerFactory,
|
||||
_parameterBinder,
|
||||
_modelMetadataProvider,
|
||||
|
|
@ -76,6 +76,8 @@ namespace Microsoft.AspNetCore.Mvc.Internal
|
|||
controllerContext,
|
||||
cacheState.Filters,
|
||||
cacheState.ActionMethodExecutor);
|
||||
|
||||
context.Result = invoker;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ Microsoft.AspNetCore.Mvc.RouteAttribute</Description>
|
|||
<PackageReference Include="Microsoft.Extensions.FileProviders.Abstractions" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.HashCodeCombiner.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Version="2.0.0-preview2-24958" />
|
||||
<PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyActivator.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyHelper.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ Microsoft.AspNetCore.Mvc.ViewComponent</Description>
|
|||
<PackageReference Include="Microsoft.AspNetCore.Html.Abstractions" Version="$(AspNetCoreVersion)" />
|
||||
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.CopyOnWriteDictionary.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.HashCodeCombiner.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyActivator.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
<PackageReference Include="Microsoft.Extensions.PropertyHelper.Sources" Version="$(AspNetCoreVersion)" PrivateAssets="All" />
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Runtime.ExceptionServices;
|
||||
|
|
@ -102,7 +103,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewComponents
|
|||
|
||||
using (_logger.ViewComponentScope(context))
|
||||
{
|
||||
var arguments = ControllerActionExecutor.PrepareArguments(context.Arguments, executor);
|
||||
var arguments = PrepareArguments(context.Arguments, executor);
|
||||
|
||||
_diagnosticSource.BeforeViewComponent(context, component);
|
||||
_logger.ViewComponentExecuting(context, arguments);
|
||||
|
|
@ -145,9 +146,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewComponents
|
|||
|
||||
using (_logger.ViewComponentScope(context))
|
||||
{
|
||||
var arguments = ControllerActionExecutor.PrepareArguments(
|
||||
context.Arguments,
|
||||
executor);
|
||||
var arguments = PrepareArguments(context.Arguments, executor);
|
||||
|
||||
_diagnosticSource.BeforeViewComponent(context, component);
|
||||
_logger.ViewComponentExecuting(context, arguments);
|
||||
|
|
@ -204,5 +203,32 @@ namespace Microsoft.AspNetCore.Mvc.ViewComponents
|
|||
typeof(IHtmlContent).Name,
|
||||
typeof(IViewComponentResult).Name));
|
||||
}
|
||||
|
||||
private static object[] PrepareArguments(
|
||||
IDictionary<string, object> parameters,
|
||||
ObjectMethodExecutor objectMethodExecutor)
|
||||
{
|
||||
var declaredParameterInfos = objectMethodExecutor.MethodParameters;
|
||||
var count = declaredParameterInfos.Length;
|
||||
if (count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var arguments = new object[count];
|
||||
for (var index = 0; index < count; index++)
|
||||
{
|
||||
var parameterInfo = declaredParameterInfos[index];
|
||||
|
||||
if (!parameters.TryGetValue(parameterInfo.Name, out var value))
|
||||
{
|
||||
value = objectMethodExecutor.GetDefaultValueForParameter(index);
|
||||
}
|
||||
|
||||
arguments[index] = value;
|
||||
}
|
||||
|
||||
return arguments;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures.Internal
|
|||
}
|
||||
}
|
||||
|
||||
public ObjectMethodExecutor GetViewComponentMethodExecutor(ViewComponentContext viewComponentContext)
|
||||
internal ObjectMethodExecutor GetViewComponentMethodExecutor(ViewComponentContext viewComponentContext)
|
||||
{
|
||||
var cache = CurrentCache;
|
||||
var viewComponentDescriptor = viewComponentContext.ViewComponentDescriptor;
|
||||
|
|
|
|||
Loading…
Reference in New Issue