Fix for issue #57

Replaced ActivatorUtilties with ITypeActivator in WebFX.
This commit is contained in:
Ryan Nowak 2014-03-10 17:44:29 -07:00
parent a5cb050b97
commit 51e5a5bf19
3 changed files with 10 additions and 6 deletions

View File

@ -10,11 +10,13 @@ namespace Microsoft.AspNet.Mvc
{ {
public class DefaultControllerFactory : IControllerFactory public class DefaultControllerFactory : IControllerFactory
{ {
private readonly ITypeActivator _activator;
private readonly IServiceProvider _serviceProvider; private readonly IServiceProvider _serviceProvider;
public DefaultControllerFactory(IServiceProvider serviceProvider) public DefaultControllerFactory(IServiceProvider serviceProvider, ITypeActivator activator)
{ {
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_activator = activator;
} }
public object CreateController(ActionContext actionContext, ModelStateDictionary modelState) public object CreateController(ActionContext actionContext, ModelStateDictionary modelState)
@ -27,7 +29,7 @@ namespace Microsoft.AspNet.Mvc
try try
{ {
var controller = ActivatorUtilities.CreateInstance(_serviceProvider, actionDescriptor.ControllerDescriptor.ControllerTypeInfo.AsType()); var controller = _activator.CreateInstance(actionDescriptor.ControllerDescriptor.ControllerTypeInfo.AsType());
// TODO: How do we feed the controller with context (need DI improvements) // TODO: How do we feed the controller with context (need DI improvements)
InitializeController(controller, actionContext, modelState); InitializeController(controller, actionContext, modelState);

View File

@ -9,11 +9,11 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
{ {
public class GenericModelBinder : IModelBinder public class GenericModelBinder : IModelBinder
{ {
private readonly IServiceProvider _serviceProvider; private readonly ITypeActivator _activator;
public GenericModelBinder(IServiceProvider serviceProvider) public GenericModelBinder(ITypeActivator activator)
{ {
_serviceProvider = serviceProvider; _activator = activator;
} }
public bool BindModel(ModelBindingContext bindingContext) public bool BindModel(ModelBindingContext bindingContext)
@ -21,7 +21,7 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
Type binderType = ResolveBinderType(bindingContext.ModelType); Type binderType = ResolveBinderType(bindingContext.ModelType);
if (binderType != null) if (binderType != null)
{ {
var binder = ActivatorUtilities.CreateInstance<IModelBinder>(_serviceProvider); var binder = _activator.CreateInstance<IModelBinder>();
return binder.BindModel(bindingContext); return binder.BindModel(bindingContext);
} }

View File

@ -20,6 +20,8 @@ namespace Microsoft.AspNet.Mvc
{ {
var describe = new ServiceDescriber(configuration); var describe = new ServiceDescriber(configuration);
yield return describe.Transient<ITypeActivator, TypeActivator>();
yield return describe.Transient<IControllerFactory, DefaultControllerFactory>(); yield return describe.Transient<IControllerFactory, DefaultControllerFactory>();
yield return describe.Transient<IControllerDescriptorFactory, DefaultControllerDescriptorFactory>(); yield return describe.Transient<IControllerDescriptorFactory, DefaultControllerDescriptorFactory>();
yield return describe.Transient<IActionSelector, DefaultActionSelector>(); yield return describe.Transient<IActionSelector, DefaultActionSelector>();