[英]Dependency injecting 'SignInManager' (Identity 2.0) with Ninject
[英]Ninject - Injecting a dependency into a namespace
我試圖在將依賴項注入某個命名空間時有條件地綁定它。 我在有關條件綁定的Ninject 文章中發現以下內容:
我們還可以通過提供委托來提供條件邏輯。 在這種情況下,詢問類的名稱和名稱空間。
Bind()。To()。When(request => request.Target.Member.Name.StartsWith(“ ClassName”)); Bind()。To()。When(request => request.Target.Type.Namespace.StartsWith(“ NameSpace.ClassName”));;
因此,我嘗試如下實現:
Bind<ILogger>().ToMethod(x => new Logger("commissionServiceLogger")).When(x => x.Target.Type.Namespace.StartsWith("My.App.CommissionService"));
但是,我得到了一個空引用異常:
你調用的對象是空的。
知道我在做什么錯嗎?
x.Target.Type
將為您提供您要解決的依賴項。 在您的情況下,這是ILogger
。
我猜想您的意思是將邏輯基於要注入ILogger
的對象類型。 在這種情況下,您需要使用x.ParentContext.Plan.Type
如下所示:
Bind<ILogger>().ToMethod(x => new Logger("commissionServiceLogger")).When(x =>
{
return x.ParentContext != null &&
x.ParentContext.Plan
.Type.Namespace
.StartsWith("My.App.CommissionService");
});
如果您嘗試直接解析ILogger
,則ParentContext
將為null
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.