我想使用 ninject InRequestScope 创建 PerRequestResourceProvider 的实例:
public class PerRequestResourceProvider: IPerRequestResourceProvider
{
priavte readonly _perRequestResorceInstance;
public PerRequestResourceProvider()
{
_perRequestResorceInstance = new PerRequestResource();
}
public PerRequestResource GetResource()
{
return _perRequestResorceInstance;
}
}
public interface IPerRequestResourceProvider
{
PerRequestResource GetResource();
}
在我的 NinjectDependencyResolver 中:
.....
kernel.Bind<IPerRequestResourceProvider>.To<PerRequestResourceProvider>().InRequestScope();
我在几个类中注入 IPerRequestResourceProvider。但是,当我向 PerRequestResourceProvider 构造函数添加断点时,我看到 PerRequestResourceProvider 在一个请求期间创建了三次,而不是每个请求创建一次。怎么了?
Update:源代码ttps://bitbucket.org/maximtkachenko/ninjectinrequestscope/src
您的代码有两个问题:
Ninject 未正确初始化。
您需要 Ninject.MVCx 包之一(根据您使用的 MVC 版本)。要正确配置它,请参阅:http://github.com/ninject/ninject.web.mvc http://github.com/ninject/ninject.web.mvc
你正在注射PerRequestResourceProvider
(类类型),而不是IPerRequestResourceProvider
(接口类型)到HomeController
, 就这样.InRequestScope()
定义于IPerRequestResourceProvider
绑定没有任何作用。改变HomeController
构造函数来注入接口类型,就可以了。
Ninject 不需要绑定可实例化(非抽象,..)类。这就是为什么使用错误的绑定时并不明显。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)