[英]How to Resolve/inject Dependency for Attribute based class?
我正在 ASP.NET Core 6 Web API 中創建以下屬性 class。
我需要從此 class 進行數據庫調用,並希望獲得已在依賴容器中注冊的dbContext
。
如何將 dbcontext 注入我的customAuthorization
class?
[AttributeUsage(AttributeTargets.Class)]
public class CustomAuthorization : Attribute, IAuthorizationFilter
{
private readonly IServiceProvider _serviceProvider;
public CustomAuthorization(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public void OnAuthorization(AuthorizationFilterContext filterContext)
{
...................
}
}
[CustomAuthorization()]
public class OrganizationController : CustomControllerBaseClass
{
// .......
}
IAuthorizationFitler
有一個OnAuthorization(AuthorizationFilterContext filterContext)
方法,不是嗎?
您可以使用filterContext.HttpContext.ServiceProvider.GetRequiredService...
。
[AttributeUsage(AttributeTargets.Class)]
public class CustomAuthorization : Attribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext filterContext)
{
var context = filterContext.HttpContext.ServiceProvider.GetRequiredService<Your_DbContext>();
...
}
}
雖然,我不知道AuthorizationFilter
的 scope,無論它是 singleton、作用域還是瞬態:如果它是 singleton,您可以自己創建一個 scope:
using(var scope = filterContext.HttpContext.ServiceProvider.CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService<Your_DbContext>();
...
}
我不知道我是在某個地方錯了還是有更簡單的方法,但這是我的快速反應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.