我在asp.net mvc 6中搜索了基本控制器,但没有任何来源(据我所查)。那么,我如何在asp.net mvc中添加基本控制器,并在constructor方法上使用服务,或者在基本控制器或任何想法中创建新方法,以便使用类似基本控制器的东西呢?
任何帮助都将不胜感激。
谢谢。
您可以通过以下方式添加基本控制器:
public class BaseController : Controller
{
public IService Service { get; }
public BaseController(IService service)
{
Service = service;
}
}
然后,您可以创建自己的控制器并继承BaseController而不是controller类。
public class NewController : BaseController
{
public NewController(IService service) : base(service)
{
}
public IActionResult NewAction()
{
var result = Service.ServiceMethod();
}
}
通过Microsoft.Extensions.DependencyInjection命名空间,我们可以访问以下扩展方法HttpContext.RequestServices.GetService
这是我们的BaseController类的源代码
public abstract class BaseController<T> : Controller where T : BaseController<T>
{
private IService service;
protected IService _service => telemetryInitializer ?? (telemetryInitializer = HttpContext.RequestServices.GetService<West.TelemetryService.ITelemetryHelper>());
}
OrderController类扩展了这个抽象的BaseController
public class OrderController : BaseController<OrderController>
{
private readonly IOrderManager _orderManager;
public OrderController(IOrderManager orderManager)
{
_orderManager = orderManager;
}
[HttpGet]
public string Get()
{
Logger.LogInformation("Hello World!");
return "Inside the Get method of OrderController";
}
}