.Net: 善用 IServiceCollection Extension 和自製 Builder,讓服務註冊更有約束吧
在之前的依賴注入文章的「組合根請稍作分類」小節,我們介紹過使用 IServiceCollection 的擴充方法來對要註冊的服務進行分類和管理的做法:
public static class ServiceCollectionExtensions
{
/// <summary>
/// 註冊 Nice Service
/// </summary>
public static IServiceCollection AddNiceServices(this IServiceCollection services)
{
services.AddScoped<INiceService, NiceService>();
// ...一些相關的註冊
return services;
}
}
// Program.cs
builder.Services.AddNiceServices();
一直以來我都採用這個方法來簡單地拆分我的服務註冊,在大多數的場合已經足夠使用(尤其是只關注目前的專案時)。
但前幾天在看某個套件的實作時,開發的朋朋跟我分享了一些延伸的做法,感覺合理又常見,屬於有注意到就會記得的小技巧,決定馬上來記錄一篇筆記。
……