gpt4 book ai didi

c# - 我可以使用 ninject 即时更改实现吗?

转载 作者:行者123 更新时间:2023-11-30 15:12:16 26 4
gpt4 key购买 nike

使用 ninject,我知道我可以绑定(bind)到某个实现,这样无论何时我都可以:

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

它将加载我将 ninject 绑定(bind)到的具体实现。

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

这可能吗?

最佳答案

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

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> )。

关于c# - 我可以使用 ninject 即时更改实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com