Asp.net

僅當尚未綁定時,如何在 Ninject 中綁定介面?

  • July 11, 2013

如果已經綁定,是否可以將 Ninject 配置為不綁定依賴項。

例如

如果我們載入一個名為 Client1 的模組,其中包含:

public class Client1Module:NinjectModule
{
   public override void Load()
   {
        Bind<IService>.To<FancyService>()
   }
}

然後我們載入一個名為 Base 的模組,其中包含

public class BaseModule:NinjectModule
{
   public override void Load()
   {
         Bind<IService>.To<BasicService>()
   }
}

我們希望確保 BasicService 未綁定並且系統始終使用 FancyService。我們不會在設計時知道 FancyService 是否存在。如果找到了 Client1 模組,則載入它。

我真的不想要在每次注入時都有一堆重複的樣板程式碼等。因為有 50-60 個依賴項都可以在客戶端模組中更改。

有任何想法嗎?

如果我假設我先載入基本模組,然後在我認為我可以使用之後載入客戶端模組

Rebind<IService>.To<FancyService>()

它似乎工作

您必須確保在 Client1Module 之後載入 BaseModule:

  public class BaseModule: NinjectModule
   {
       public override void Load()
       {
           if (!Kernel.GetBindings(typeof(IService)).Any())
           {
               Bind<IService>().To<BasicService>();
           }
       }
   }

引用自:https://stackoverflow.com/questions/12316215