使InRequestScope与Ninject和WebApi一起工作



我有一个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();

相关内容

最新更新