【发布时间】:2020-01-27 17:31:28
【问题描述】:
我有一个 ASP.Net Core 2.1 应用程序。我需要注册并注入一些AWS 的依赖项。
目前,实现如下所示:
public abstract class BaseService
{
protected readonly IConfiguration _configuration;
protected readonly RegionEndpoint _region;
protected readonly IAmazonDynamoDB _dynamoClient;
protected IPocoDynamo _pocoDynamo;
public BaseService(IConfiguration configuration)
{
_configuration = configuration;
var awsSettings = configuration.GetSection("AWS");
_dynamoClient = SetDynamoClient(awsSettings);
_pocoDynamo = SetPocoDynamoClient();
}
protected IAmazonDynamoDB SetDynamoClient(IConfigurationSection configuration)
{
AWSCredentials credentials = new BasicAWSCredentials(configuration["AccessKey"], configuration["AccessSecret"]);
return new AmazonDynamoDBClient(credentials, _region);
}
protected IPocoDynamo SetPocoDynamoClient()
{
return new PocoDynamo(_dynamoClient);
}
}
在进行单元测试时,不能因此模拟 AWS 服务。
我想在Startup.csConfigureServices()中注册所有这些依赖项
这是我正在尝试的:
public void ConfigureServices(IServiceCollection services)
{
AWSCredentials credentials = new BasicAWSCredentials(configuration["AccessKey"], configuration["AccessSecret"]);
services.AddTransient(IAmazonDynamoDB, (a) =>
{
return new AmazonDynamoDBClient(credentials, RegionEndpoint.GetBySystemName(""))
});
// here I need to pass the IAmazonDynamoDB to below IOC
// services.AddSingleton<IPocoDynamo,new PocoDynamo()> ();
return services;
}
但这会引发错误
错误 CS0119 'IAmazonDynamoDB' 是一种类型,在给定的上下文中无效
这里如何根据需要配置依赖?
谢谢!
【问题讨论】:
标签: c# dependency-injection inversion-of-control ioc-container asp.net-core-2.1