我有一个接口-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();