我有一个MVC4/WebApi项目,我正在尝试与Ninject3连接。我想在请求范围内的多个实体之间共享一个特定对象,但我知道我需要提供InRequestScope的某种实现(https://stackoverflow.com/a/10592203/173225)。我在GitHub上查看了源代码,它似乎只是返回HttpContext.Current
。我试过了:
var messages = new List<string>();
kernel.Bind<IList<string>>()
.ToMethod(x => messages)
.WhenMemberHas<ServiceResultMessagesAttribute>()
.InScope(x => HttpContext.Current);
运气不佳。我还尝试使用Ninject.Web.WebApi(#9018)的最新"不稳定"Nuget包,如https://groups.google.com/d/msg/ninject/rC2vhj8yvBU/NAIkNA-QrAAJ,但我得到了相同的错误(方法get_InRequestScope没有实现)。
至于GitHub上的源代码,在编写相关文件的最后一次更新时是11个月到一年多前,所以我不知道不稳定的Nuget包是否是最新的(尤其是考虑到Ninject的文档状态)。
有人能提供一个正确的工作示例,说明如何在请求范围内的多个组件中注入对象的同一实例吗?
谢谢。
您将需要来自nuget或其他地方的Ninject.Web.Common引用,并使用InRequestScope方法。
var messages = new List<string>();
kernel.Bind<IList<string>>()
.ToMethod(x => messages)
.WhenMemberHas<ServiceResultMessagesAttribute>()
.InRequestScope();