- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的理解是,当使用内置的依赖注入(inject)时,.NET Core 控制台应用程序将要求您自己创建和管理所有范围,而 ASP.NET Core 应用程序将创建和管理 HttpRequest
范围默认通过定义的中间件。
使用 ASP.NET Core,您可以选择创建和管理您自己的范围,方法是在您需要位于 HttpRequest
之外的服务时调用 CreateScope()
。
很明显每次调用IServiceScopeFactory.CreateScope()
都会创建一个新的IServiceScope
;但是,每次调用 IServiceProvider.CreateScope()
扩展方法是否也会创建一个新的 IServiceScope
?
基本上,以下在 ASP.NET Core 和 .NET Core 控制台应用程序中创建作用域的方法之间是否存在有意义的区别:
public class Foo()
{
public Foo(IServiceProvider serviceProvider)
{
using(var scope = serviceProvider.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}
和
public class Bar()
{
public Bar(IServiceScopeFactory scopeFactory)
{
using(var scope = scopeFactory.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}
最佳答案
CreateScope from IServiceProvider解析 IServiceScopeFactory
并对其调用 CreateScope()
:
public static IServiceScope CreateScope(this IServiceProvider provider)
{
return provider.GetRequiredService<IServiceScopeFactory>().CreateScope();
}
所以,正如@Evk 所说
functionally both methods are identical
IServiceProvider
刚刚从 IServiceScopeFactory
CreateScope()
关于c# - .NET Core IServiceScopeFactory.CreateScope() 与 IServiceProvider.CreateScope() 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200200/
因此,我一直在将 IServiceScopeFactory 注入(inject)我的页面,以便在通过 EF Core 获取数据时使用它的作用域。但是昨天我偶然发现有人在调用数据库时使用 Task.Fr
我的理解是,当使用内置的依赖注入(inject)时,.NET Core 控制台应用程序将要求您自己创建和管理所有范围,而 ASP.NET Core 应用程序将创建和管理 HttpRequest范围默认
我正在开发一个应用程序 Asp.net 核心 使用 Autofac 作为默认 DI,在我的集成测试中,我需要一些服务,在安装之前 我通过创建 IServiceScopeFactory 注入(injec
我是一名优秀的程序员,十分优秀!