Asp.net
僅當尚未綁定時,如何在 Ninject 中綁定介面?
如果已經綁定,是否可以將 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>(); } } }