【发布时间】:2019-06-05 05:56:59
【问题描述】:
我需要 ASP.Net Core 依赖注入将一些参数传递给实现 ICardPaymentRepository 接口的 GlobalRepository 类的构造函数。
参数用于配置,来自配置文件和数据库,我不希望我的班级去引用数据库和配置本身。
我认为工厂模式是做到这一点的最佳方式,但我想不出使用工厂类的最佳方式,工厂类本身依赖于配置和数据库。
我的创业公司目前是这样的:
public class Startup
{
public IConfiguration _configuration { get; }
public IHostingEnvironment _environment { get; }
public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
_configuration = configuration;
_environment = environment;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IDbRepository, DbRepository>();
var connection = _configuration.GetConnectionString("DbConnection");
services.Configure<ConnectionStrings>(_configuration.GetSection("ConnectionStrings"));
services.AddDbContext<DbContext>(options => options.UseSqlServer(connection));
services.AddScoped<ICardPaymentRepository, GlobalRepository>();
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IRFDbRepository rFDbRepository)
{
...
}
}
GlobalRepository 构造函数如下所示:
public GlobalRepository(string mode, string apiKey)
{
}
我现在如何将配置中的模式和 DbRepository 中的 apiKey 传递到 Startup 的构造函数中?
【问题讨论】:
-
注册存储库时使用工厂委托重载
标签: c# asp.net-core dependency-injection .net-core