溫馨提示×

c# iserviceprovider 支持多種服務嗎

c#
小樊
114
2024-12-04 04:31:45
欄目: 編程語言

是的,C# 的 IServiceProvider 接口支持多種服務。IServiceProvider 是一個用于獲取已注冊服務的依賴注入容器。你可以通過調用 GetService 方法來獲取不同類型的服務實例。

以下是一個簡單的示例,展示了如何在 IServiceProvider 中注冊和獲取多種服務:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

// 定義兩個服務接口
public interface IServiceA
{
    string GetData();
}

public interface IServiceB
{
    int Calculate(int number);
}

// 實現兩個服務類
public class ServiceA : IServiceA
{
    public string GetData()
    {
        return "Hello from ServiceA";
    }
}

public class ServiceB : IServiceB
{
    public int Calculate(int number)
    {
        return number * 2;
    }
}

class Program
{
    static async Task Main(string[] args)
    {
        // 創建服務容器并注冊服務
        var serviceProvider = new ServiceCollection()
            .AddTransient<IServiceA, ServiceA>()
            .AddTransient<IServiceB, ServiceB>()
            .BuildServiceProvider();

        // 獲取服務實例
        var serviceA = serviceProvider.GetService<IServiceA>();
        var serviceB = serviceProvider.GetService<IServiceB>();

        // 使用服務
        Console.WriteLine(serviceA.GetData());
        Console.WriteLine(serviceB.Calculate(5));
    }
}

在這個示例中,我們定義了兩個服務接口 IServiceAIServiceB,以及它們對應的實現類 ServiceAServiceB。然后,我們創建了一個 ServiceCollection 實例,并使用 AddTransient 方法注冊了這兩個服務。最后,我們通過調用 BuildServiceProvider 方法創建了一個 IServiceProvider 實例,并使用它來獲取服務實例。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女