首先,我的问题仅适用于 Web 应用程序,我倾向于使用 InRequestScope 分辨率设置我的大部分 Ninject 绑定。
我正在考虑进行功能切换的方法,我的一个想法是致电:
kernel.Rebind<IInterface>().To<RealImplementation>().InRequestScope();
当网站仍在运行时,开关已被轻弹。如果我决定关闭该功能,我可以打电话
kernel.Rebind<IInterface>().To<EmptyImplementation>().InRequestScope();
我的想法是 InRequestScope 将保护任何“正在进行的”代码请求,但将允许新请求获得新切换的功能。
有没有人从经验(或对 Ninject 的更深入了解)中知道这是否可行,或者是否会给我带来更多麻烦。我表面上看过 MEF,所以如果 Ninject 在这种情况下不是完成这项工作的最佳工具,那将是我的下一个停靠点。