我想在注入泛型型別時提供引數。這可能嗎?
我的泛型型別定義:
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<>));
我如何給予baseAddress和endpoint在這種用法中?
謝謝。
uj5u.com熱心網友回復:
您可以為建構式引數創建單獨的類。
例如,根據您的代碼:
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);
將設定類注入您的ApiClient
public class ApiClient<T> : IApiClient<T> where T : class
{
public ApiClient(ApiClientSettings settings)
{
//some codes
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/426106.html
