【发布时间】:2018-08-05 04:17:03
【问题描述】:
- 我想覆盖我的控制器方法。在这里,如果对 CatalogController 的请求,我已经覆盖了 DefaultControllerFactory 的 CreateController 方法以返回 CatalogCustomController 对象。
但问题在于我需要将所有依赖项传递给控制器构造函数。
public class CustomControllerFactory: DefaultControllerFactory
{
public CustomControllerFactory(ICatalogModelFactory catalogModelFactory,
IProductModelFactory productModelFactory,
IControllerActivator controllerActivator, IEnumerable<IControllerPropertyActivator> propertyActivators)
:base(controllerActivator, propertyActivators)
{
this._catalogModelFactory = catalogModelFactory;
this._productModelFactory = productModelFactory;
}
public override object CreateController(ControllerContext context)
{
if (context.ActionDescriptor.ControllerTypeInfo.AsType() == typeof(CatalogController))
{
return new CatalogCustomController(_catalogModelFactory,
_productModelFactory,
_categoryService,
}
return base.CreateController(context);
}
}
虽然我想做这样的事情,但通过修改 ControllerContext 上下文
public override object CreateController(ControllerContext context)
{
if (context.ActionDescriptor.ControllerTypeInfo.AsType() == typeof(CatalogController))
{
context.ActionDescriptor.ControllerName = "CatalogCustomController";
}
return base.CreateController(context);
}
【问题讨论】:
标签: asp.net-core-mvc controller-factory