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>
)的参数。