C# 如何在ASP.NET Core的DI注入器中注册映射到同一类型的两个配置
假设我们在appSettings.json文件中有两个连接字符串,这只是一个示例,我正在寻找一种更好的方法来实现它,而不管我在配置什么:C# 如何在ASP.NET Core的DI注入器中注册映射到同一类型的两个配置,c#,asp.net-core,dependency-injection,C#,Asp.net Core,Dependency Injection,假设我们在appSettings.json文件中有两个连接字符串,这只是一个示例,我正在寻找一种更好的方法来实现它,而不管我在配置什么: "ImportDb": { "StringConexao": "data source=server_n1;initial catalog=MyImportDb;user id=SYSDBA;password=masterkey;Charset=UTF8;", "Bool
"ImportDb": {
"StringConexao": "data source=server_n1;initial catalog=MyImportDb;user id=SYSDBA;password=masterkey;Charset=UTF8;",
"BooleanProperty": false
},
"MainDb": {
"StringConexao": "data source=server_n1;initial catalog=MyMainDb;user id=SYSDBA;password=masterkey;Charset=UTF8;",
"BooleanProperty": false
},
今天,我解决了映射到两种不同类型的问题:
public class DbConfig
{
public string StringConexao { get; set; }
public bool BooleanProperty { get; set; }
}
public class LocalDbConfig: DbConfig
{
}
在DI中注册如下:
serviceCollection.Configure<DbConfig>(DadosConfig.GetSection("MainDb"));
serviceCollection.Configure<LocalDbConfig>(DadosConfig.GetSection("ImportDb"));
servicecolection.Configure(dadoconfig.GetSection(“MainDb”);
Configure(dadoconfig.GetSection(“ImportDb”);
为什么我会这样解决:
- 两种配置具有完全相同的属性。它们只在使用的类别上有所不同
- 在上述字符串连接的情况下,2个配置甚至可以引用两个不同网络上的不同服务器
- 我不能将它们视为一个列表(我需要能够在构造函数上处理一个或另一个)
- 由于这两种类型都是后代,如果某些需求发生变化,并且使用其中一种配置的类也需要接受另一种配置,那么我不能为每种类型的DbConfig分别使用两个构造函数——这会混淆DI注入器
是FirebirdSQL db服务器的默认登录/密码。这是众所周知的多年user id=SYSDBA;password=masterkey
- 对于那些好奇的人来说,“StringConexao”的意思是“ConnectionString”