欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET 8 中的 Keyed Services解鎖依賴注入的新方式(最新推薦)

 更新時(shí)間:2025年07月22日 09:50:39   作者:t0_54coder  
.NET8引入KeyedServices,允許通過鍵區(qū)分同一接口的不同實(shí)現(xiàn),簡化服務(wù)選擇邏輯,通過注冊(cè)和注入特性實(shí)現(xiàn)靈活依賴管理,提升代碼可維護(hù)性,但需.NET8及以上版本支持,本文給大家介紹.NET 8 中的 Keyed Services解鎖依賴注入的新方式,感興趣的朋友一起看看吧

在.NET 8 發(fā)布之后,依賴注入(Dependency Injection,DI)體系迎來了一個(gè)全新的功能——Keyed Services。這篇博客將帶你探索如何通過Keyed Services來實(shí)現(xiàn)基于特定鍵選擇服務(wù)實(shí)例的方法。

什么是Keyed Services?

傳統(tǒng)的DI容器允許你注冊(cè)服務(wù),但并沒有提供一個(gè)簡單的方式來區(qū)分同一個(gè)接口的不同實(shí)現(xiàn)。Keyed Services的引入解決了這個(gè)問題,它允許你使用鍵(可以是任何類型,包括字符串、枚舉等)來標(biāo)識(shí)不同的服務(wù)實(shí)例。

如何使用Keyed Services?

讓我們以一個(gè)具體的示例來展示如何在.NET 8 中使用Keyed Services。

假設(shè)我們有一個(gè)接口ISampleC,它有兩個(gè)實(shí)現(xiàn):SampleDSampleE。我們希望根據(jù)一個(gè)枚舉值來選擇具體的實(shí)現(xiàn)。

首先,定義枚舉類型:

public enum ServiceInstanceEnum { SampleE, SampleD }

然后,在Program.csStartup.cs中注冊(cè)服務(wù):

builder.Services.AddKeyedScoped<ISampleC, SampleD>(ServiceInstanceEnum.SampleD);
builder.Services.AddKeyedScoped<ISampleC, SampleE>(ServiceInstanceEnum.SampleE);

這里,我們使用AddKeyedScoped方法將SampleDSampleE分別與枚舉值關(guān)聯(lián)起來。

在控制器中使用

在控制器中注入特定服務(wù)實(shí)例:

public class WeatherForecastController : Controller
{
    private readonly ISampleC _sampleC;
    public WeatherForecastController(
        ILogger<WeatherForecastController> logger,
        [FromKeyedServices(ServiceInstanceEnum.SampleE)] ISampleC sampleC)
    {
        _logger = logger;
        _sampleC = sampleC;
    }
    // 控制器的其他方法
}

通過[FromKeyedServices]特性,我們可以指定需要注入的ISampleC實(shí)例的鍵值。

好處與限制

  • 好處

    • 更靈活的服務(wù)選擇方式。
    • 避免了創(chuàng)建工廠方法或手動(dòng)實(shí)例化服務(wù)的繁瑣。
    • 能夠直接利用DI容器管理服務(wù)的生命周期。
  • 限制

    • 需要.NET 8 及以上版本。
    • 對(duì)于大量鍵值的管理,可能需要額外的配置和設(shè)計(jì)考慮。

結(jié)論

Keyed Services 是一個(gè)強(qiáng)大的工具,它擴(kuò)展了.NET DI 容器的能力,使得服務(wù)的選擇和注入變得更加直觀和靈活。通過這篇博客的介紹和示例,你應(yīng)該能夠開始在自己的項(xiàng)目中嘗試和使用這一新特性。記住,DI 容器不僅僅是用來注入依賴的,它還可以幫助你管理復(fù)雜的服務(wù)實(shí)例選擇邏輯,提高代碼的可維護(hù)性和可測試性。

到此這篇關(guān)于.NET 8 中的 Keyed Services:解鎖依賴注入的新方式的文章就介紹到這了,更多相關(guān).net Keyed Services依賴注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論