gpt4 book ai didi

.net - Ninject 中的 RequestScope() 和 Kernel.Get<>

转载 作者:行者123 更新时间:2023-12-04 17:27:28 24 4
gpt4 key购买 nike

如果我在 ninject 中使用 ReqeustScope() 定义绑定(bind),然后调用Kernel.Get<T>在请求之外的那种类型上,解析对象的范围是什么?

最佳答案

如果我们研究 StandardScopeCallbacks我们可以看到请求范围的回调是当前的 HTTP 上下文。 transient 对象的回调为空。如果您在请求之外解析服务,则当前 HTTP 上下文为空。因此,范围是隐含的 transient ,如以下测试所示。

[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));
}

关于.net - Ninject 中的 RequestScope() 和 Kernel.Get<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com