具有某些参数的通用接口的依赖注入

Dependency injection for generic interface with some parameters

我想在注入泛型类型时提供参数。这可能吗?

我的泛型类型定义:

public interface IApiClient<T> where T : class
{
    
}

public class ApiClient<T> : IApiClient<T> where T : class
{
    public ApiClient(string baseAddress = "", string endpoint = "")
    {
        //some codes
    }
}

我的实现是:

services.AddSingleton(typeof(IApiClient<>), typeof(ApiClient<>));

如何在这个用法中给出 baseAddressendpoint

谢谢。

您可以为构造函数参数单独设置 class。

例如基于您的代码:

public class ApiClientSettings 
{
    public string BaseAddress { get; set; }
    public string Endpoint { get; set; }
}

创建 ApiClientSettings 的实例(或者您甚至可以简单地从 appsettings.json 文件中获取值)。然后在容器中注册ApiClientSettings

var apiClientSettings = new ApiClientSettings
{
    BaseAddress = "address",
    Endpoint = "endpoint"
};
services.AddSingleton(apiClientSettings);

将设置 class 注入到您的 ApiClient

public class ApiClient<T> : IApiClient<T> where T : class
{
    public ApiClient(ApiClientSettings settings)
    {
        //some codes
    }
}