为什么要通过HttpContext.RequestServices或IServiceProvider考虑不良做法请求服务.我可以在这个地方读到这句话:
建议使用构造函数注入而不是使用RequestServices获取它.
我的想法恰恰相反.尽可能使用RequestServices.让我解释一下原因.我想保持控制器尽可能小,所以我创建了单独的服务.这样,我的控制器很干净:
public class MyController : Controller
{
public MyController(IMyServices MyServices){}
public async Task<IActionResult> GetSomething(int parameter)
{
return await this.MyServices.SomeMethod(parameter);
}
}
Run Code Online (Sandbox Code Playgroud)
所有服务都从base继承,其中包含用于管理权限的逻辑,缓存sql请求....
使用构造函数方法,我得到了非常复杂的调用库系统:
public class MyBaseService
{
public MyBaseService(ILogger Logger, AppDbContext Context, IMemoryCache Cache) { }
public bool HasRight(string right) { return true; }
public bool IsLoggedIn() { return true; }
}
public class MyServices : MyBaseService
{
public MyServices(ILogger Logger, AppDbContext Context, IMemoryCache Cache) : base(Logger, Context, Cache)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但随着GetRequiredService …