3
使用ninject,我知道我可以綁定到特定的實現,使得whenver我做的:我可以使用ninject實時更改實現嗎?
ISomeCache myCache = Ninject.Get<ISomeCache>();
它會載入我的具體實施,我結合ninject來。
說我存儲哪個具體的實現我想在數據庫(網絡應用程序)中使用,當我在管理面板中更改它應該在飛行中使用我想要的類。
這可能嗎?
使用ninject,我知道我可以綁定到特定的實現,使得whenver我做的:我可以使用ninject實時更改實現嗎?
ISomeCache myCache = Ninject.Get<ISomeCache>();
它會載入我的具體實施,我結合ninject來。
說我存儲哪個具體的實現我想在數據庫(網絡應用程序)中使用,當我在管理面板中更改它應該在飛行中使用我想要的類。
這可能嗎?
只要你可以確定你正在執行的上下文,是的,你可以做到這一點。
kernel.Bind<IMyService>().To<MyUserService>().When(request => GetSiteContext() == "user");
kernel.Bind<IMyService>().To<MyAdminService>().When(request => GetSiteContext() == "admin");
其中GetSiteContext是你會寫,以確定你正在執行什麼情況下的方法。.When(...)
需要Func<IRequest,bool>
爲(等於Predicate<IRequest>
)的參數。