kay*_*one 5 .net dependency-injection ninject webrequest
如果我在ninject中定义了一个绑定ReqeustScope(),然后Kernel.Get<T>在请求之外调用该类型,那么解析对象的范围是什么?
mry*_*ren 10
如果我们研究StandardScopeCallbacks,我们可以看到请求范围的回调是当前的HTTP上下文.瞬态对象的回调为null.如果解析请求之外的服务,则当前HTTP上下文为空.因此,范围是隐含的瞬态,如下面的测试所示.
[Test]
public void ServiceInRequestScopeIsImplicitTransientWhenHttpContextIsNull()
{
var kernel = new StandardKernel();
kernel.Bind<ServiceInRequestScope>().ToSelf().InRequestScope();
Assert.That(HttpContext.Current, Is.Null);
var service0 = kernel.Get<ServiceInRequestScope>();
var service1 = kernel.Get<ServiceInRequestScope>();
Assert.That(service0, Is.Not.SameAs(service1));
}
Run Code Online (Sandbox Code Playgroud)