3

使用ninject,我知道我可以绑定到某个实现,这样每当我这样做时:

ISomeCache myCache = Ninject.Get<ISomeCache>();

它将加载我绑定 ninject 的具体实现。

假设我将要使用的具体实现存储在数据库(Web 应用程序)中,当我在管理面板中更改它时,它应该即时使用我想要的类。

这可能吗?

4

1 回答 1

5

只要您可以确定您正在执行的上下文,是的,您可以做到。

kernel.Bind<IMyService>().To<MyUserService>().When(request => GetSiteContext() == "user");

kernel.Bind<IMyService>().To<MyAdminService>().When(request => GetSiteContext() == "admin");

其中 GetSiteContext 是您将编写以确定您正在执行的上下文的方法。.When(...)将 aFunc<IRequest,bool>作为参数(等于Predicate<IRequest>)。

于 2009-09-30T16:03:01.923 回答