2023年11月9日 星期四

.NET Core Console Application 使用依賴注入(三)

之前有介紹使用內建DependencyInjection 的使用方式,這回嘗試使用 Autofac 套件達到DI的效果,

當然 Autofac 還有其他強大的功能,這邊先透過基本的注入觀察其生命週期



首先建立 Console 專案,並且使用 nuget 加入Autofac.Extensions.DependencyInjection 套件


建立相關 Interface 與 Class

IReportServiceLifetime


IExampleTransientService


IExampleScopedService


IExampleSingletonService


ExampleTransientService


ExampleScopedService


ExampleSingletonService


ServiceLifetimeReporter

該類別透過建構式注入相關物件,並且透過 ReportServiceLifetimeDetails() 方法印出物件的Guid 等資訊


Program.cs


由上圖可知,註冊類別是透過 RegisterType<>來達到,並且尾端設定該物件注入的生命週期

  • InstancePerDependency() → 對應內建DI的 AddTransient()

  • InstancePerLifetimeScope() → 對應內建DI的 AddScoped()

  • SingleInstance() → 對應內建DI的 AddSingleton()


後面同樣透過ExemplifyServiceLifetime() 方法來印出相關資訊,其中使用BeginLifetimeScope()

方法建立 scope 物件,再透過Resolve.ReportServiceLifetimeDetails() 方法輸出


執行結果

沒有留言:

張貼留言