簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM