Luc*_*nde 3 .net dependency-injection autofac asp.net-core
我正在使用Autofac作为默认DI 在Asp.net Core中开发一个应用程序,并且在集成测试中,我需要一些服务,这些服务在安装要注入的Autofac之前通过创建a 然后调用该方法以能够获得服务需要,就像下面的代码:IServiceScopeFactory
CreateScope()
public void ExampleOfAspNetServiceScope(){
var scopeFactory = _testServer.Host.Services.GetRequiredService<IServiceScopeFactory>();
using (var scope = scopeFactory.CreateScope()){
var service = scope.ServiceProvider.GetService<ISomeService>();
// Some stuff...
}
}
Run Code Online (Sandbox Code Playgroud)
在将Autofac安装到我的应用程序中之后,我在文档中找到了接口ILifeTimeScope,现在可以如下重写我的代码:
public void ExampleOfAutofacScope(){
var lifetimeScope = _testServer.Host.Services.GetRequiredService<ILifetimeScope>();
using (var scope = lifetimeScope.BeginLifetimeScope()){
var service = scope.Resolve<ISomeService>();
// Some stuff...
}
}
Run Code Online (Sandbox Code Playgroud)
我对两者都进行了集成测试,看来它们的表现相同。因此,我想知道两种方法之间的区别是什么。
提前致谢。
只是使用Microsoft.Extensions.DependencyInjection抽象,而不是直接使用Autofac,这是同一回事。
我建议您查看Autofac.Extensions.DependencyInjection中的实际代码,以获取更具体的信息。实际上没有什么太多,您可以亲眼看到它的工作原理。
归档时间: |
|
查看次数: |
1417 次 |
最近记录: |