是的,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));
}
}
在這個示例中,我們定義了兩個服務接口 IServiceA
和 IServiceB
,以及它們對應的實現類 ServiceA
和 ServiceB
。然后,我們創建了一個 ServiceCollection
實例,并使用 AddTransient
方法注冊了這兩個服務。最后,我們通過調用 BuildServiceProvider
方法創建了一個 IServiceProvider
實例,并使用它來獲取服務實例。