IServiceCollection在.net Framework中配置方法模拟



我有一个接口-ITestClient,还有一个实现-TestClient,配置文件-TestClientConfig。在.net核心3.1.net框架4.7上有两个项目。在核心上的实现:

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
(...)
services.AddRestApiClient(Configuration)
(...)
}

扩展.cs:

public static IServiceCollection AddRestApiClient(
this IServiceCollection services,
IConfiguration configuration,
string section = "Endpoints:TestRestApi")
{
services
.Configure<TestClientConfig>(configuration.GetSection(section))
.AddTransient<ITestClient, TestClient>();
return services;
}

TestClient.cs:

public class TestClient : TestClient
{
(...)
/// <summary>
/// ctor
/// </summary>

public TestClient(IOptions<TestClientConfig> option)
{
if (_httpClient != null)
return;
_httpClient = new HttpClient();
_httpClient.BaseAddress = new Uri(option.Value.Host);
ServicePointManager.DefaultConnectionLimit = int.MaxValue;
}

我需要通过Autofac在框架4.7上进行同样的实现。我在autofac:中注册我的实体

builder.Register((c, p) =>
new TestClient(p.Named<IOptions<TestClientConfig>>("option")))
.As<ITestClient>();

但是我该如何设置配置呢?

修复Autofac配置:

builder.RegisterType<TestClient>().As<ITestClient>().InstancePerRequest();
builder.Register(ctx => new TestClient(ConfigurationManager.AppSettings["ApiHost"]))
.As<ITestClient>()
.InstancePerRequest();

最新更新