.net RequestScope()和Kernel.Get<&燃气轮机;在尼尼特
如果我使用.net RequestScope()和Kernel.Get<&燃气轮机;在尼尼特,.net,dependency-injection,ninject,webrequest,.net,Dependency Injection,Ninject,Webrequest,如果我使用requeustscope()在ninject中定义绑定,然后调用内核。在请求之外的类型上获取,解析对象的范围将是什么?如果我们研究,我们可以看到请求范围的回调是当前HTTP上下文。瞬态对象的回调为null。如果在请求之外解析服务,则当前HTTP上下文为空。因此,范围是隐式瞬态的,正如下面的测试所示 [Test] public void ServiceInRequestScopeIsImplicitTransientWhenHttpContextIsNull() { var k
requeustscope()
在ninject中定义绑定,然后调用内核。在请求之外的类型上获取,解析对象的范围将是什么?如果我们研究,我们可以看到请求范围的回调是当前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));
}
[测试]
当HttpContextIsNull()时,RequestScopeIsImplicitTransient中的公共无效服务
{
var kernel=新的标准内核();
kernel.Bind().ToSelf().InRequestScope();
Assert.That(HttpContext.Current,Is.Null);
var service0=kernel.Get();
var service1=kernel.Get();
Assert.That(service0,Is.Not.SameAs(service1));
}
我想知道如何做类似的事情。我有在请求期间做出的决议,一些工厂在请求之后坚持。使用NamedScope和ContextPreservation并不能帮助我在一个逻辑请求的上下文中解决问题。