Dot-Net
使用 Autofac LifeTimeScope 和 Asp.net Core DI Extension IServiceScopeFactory 創建範圍之間的區別
我正在使用Autofac作為預設 DI 在****Asp.net Core中開發應用程序,在我的集成測試中,我需要一些服務,在安裝 Autofac 之前,我通過創建一個然後呼叫該方法來獲取服務需要,就像下面的程式碼:
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... } }將 Autofac 安裝到我的應用程序後,我在文件中找到了介面 ILifeTimeScope,現在我的程式碼可以重寫如下:
public void ExampleOfAutofacScope(){ var lifetimeScope = _testServer.Host.Services.GetRequiredService<ILifetimeScope>(); using (var scope = lifetimeScope.BeginLifetimeScope()){ var service = scope.Resolve<ISomeService>(); // Some stuff... } }我對兩者都進行了集成測試,它們的行為似乎相同。所以,我想知道這兩種方法有什麼區別。
提前致謝。
這是同一件事,只是使用 Microsoft.Extensions.DependencyInjection 抽象而不是直接使用 Autofac。
我建議查看 Autofac.Extensions.DependencyInjection 中的實際程式碼以獲得更具體的清晰度。它實際上並不多,您可以自己確切地看到它是如何工作的。