之前有介紹使用內建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() 方法輸出
執行結果
沒有留言:
張貼留言