Fix for #996 - ViewComponentInvoker should get TypeActivator from DI.
This commit is contained in:
parent
7ae5e66ccd
commit
7012b3fc2b
|
|
@ -14,17 +14,20 @@ namespace Microsoft.AspNet.Mvc
|
|||
public class DefaultViewComponentInvoker : IViewComponentInvoker
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ITypeActivator _activator;
|
||||
private readonly TypeInfo _componentType;
|
||||
private readonly IViewComponentActivator _viewComponentActivator;
|
||||
private readonly object[] _args;
|
||||
|
||||
public DefaultViewComponentInvoker(
|
||||
[NotNull] IServiceProvider serviceProvider,
|
||||
[NotNull] ITypeActivator activator,
|
||||
[NotNull] IViewComponentActivator viewComponentActivator,
|
||||
[NotNull] TypeInfo componentType,
|
||||
object[] args)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
_activator = activator;
|
||||
_componentType = componentType;
|
||||
_viewComponentActivator = viewComponentActivator;
|
||||
_args = args ?? new object[0];
|
||||
|
|
@ -74,8 +77,7 @@ namespace Microsoft.AspNet.Mvc
|
|||
|
||||
private object CreateComponent([NotNull] ViewContext context)
|
||||
{
|
||||
var activator = _serviceProvider.GetRequiredService<ITypeActivator>();
|
||||
var component = activator.CreateInstance(_serviceProvider, _componentType.AsType());
|
||||
var component = _activator.CreateInstance(_serviceProvider, _componentType.AsType());
|
||||
_viewComponentActivator.Activate(component, context);
|
||||
return component;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,19 +2,23 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Microsoft.AspNet.Mvc.Core;
|
||||
using Microsoft.Framework.DependencyInjection;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc
|
||||
{
|
||||
public class DefaultViewComponentInvokerProvider : IViewComponentInvokerProvider
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ITypeActivator _typeActivator;
|
||||
private readonly IViewComponentActivator _viewComponentActivator;
|
||||
|
||||
public DefaultViewComponentInvokerProvider(IServiceProvider serviceProvider,
|
||||
public DefaultViewComponentInvokerProvider(
|
||||
IServiceProvider serviceProvider,
|
||||
ITypeActivator typeActivator,
|
||||
IViewComponentActivator viewComponentActivator)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
_typeActivator = typeActivator;
|
||||
_viewComponentActivator = viewComponentActivator;
|
||||
}
|
||||
|
||||
|
|
@ -25,9 +29,13 @@ namespace Microsoft.AspNet.Mvc
|
|||
|
||||
public void Invoke([NotNull] ViewComponentInvokerProviderContext context, [NotNull] Action callNext)
|
||||
{
|
||||
context.Result =
|
||||
new DefaultViewComponentInvoker(
|
||||
_serviceProvider, _viewComponentActivator, context.ComponentType, context.Arguments);
|
||||
context.Result = new DefaultViewComponentInvoker(
|
||||
_serviceProvider,
|
||||
_typeActivator,
|
||||
_viewComponentActivator,
|
||||
context.ComponentType,
|
||||
context.Arguments);
|
||||
|
||||
callNext();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue