配置
目前配置是基于Microsoft的原生配置功能来扩展开发的。Nuget包是Aegis.Configuration
这个包目前只提供ConfigManager
静态类用于快速获取配置。
获取配置
配置如下
AppSettings.json
:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Warning"
}
},
"LoadConfigurations":["Configs/","BizConfigs/BizConfig.json"],
"Databases": [
{
"ConnectionName": "AegisDb",
"DatabaseType": "SqlServer",
"ConnectionString": "1"
},
{
"ConnectionName": "MdmDB",
"DatabaseType": "SqlServer",
"ConnectionString": "2"
}],
"IdGenerator": {
"WorkerId": 2,
"WorkerIdLength": 5,
"IndexLength": 8
},
"MaxNumber":99,
"RedisUrl": "x.x.x.x:6379",
"AllowedHosts": "*"
}
Configs/Medical.json
,额外配置可以通过设置LoadConfigurations
来配置其他配置项,可以配置目录,也可以配置具体的json文件
{
"MedicalOption": {
"Host": "Http://www.baidu.com",
"Port": 8001
}
}
获取指定配置项
var redisUrl = ConfigManager.Get("RedisUrl"); //快速获取字符串,Get是默认获取字符串
var maxNumber = ConfigManager.Get<int>("MaxNumber"); //获取指定类型的配置
var workId = ConfigManager.Get<int>("IdGenerator:WorkerId"); //获取指定类型下某个层级的配置
快速获取配置类
如果给Config类设置了ConfigRoot
属性,在获取Config类时会根据ConfigRoot
标记的名称来自动映射配置。
注意:如果没有设置ConfigRoot属性,在使用直接
Get<T>()
方法的时候,会使用对应类型的名字作为配置名映射,如果找不到会返回null。 如果不想设置ConfigRoot还想使用配置类型获取的话请使用Get<T>(string key)
来指定配置节点。
var medicalConfig = ConfigManager.Get<MedicalConfig>();
var medicalPort = medicalConfig.Port; //读出8001
var medicalConfig2 = ConfigManager.Get<MedicalConfig>("MedicalOption"); //与ConfigManager.Get<MedicalConfig>()一致
[ConfigRoot("MedicalOption")]
public class MedicalConfig
{
public string Host { get; set; }
public int Port { get; set; }
}
获取数组
有的时候我们需要获取配置里的数组,就可以使用GetArray<T>(string key)
方法
string[] configs = ConfigManager.GetArray<string>("LoadConfigurations");
string firstConfig = configs[0] //获取到"Configs/"字符串
var databases = ConfigManager.GetArray<DatabaseConfig>("Databases");
string db1ConnectString = databases[0].ConnectionString; //获取到"1"字符串
自定义配置
目前版本只支持Json的自定义配置文件加载
在AppSettings.json
中,追加"LoadConfigurations"
的配置即可使用自定义配置。
LoadConfigurations
是个字符串数组,内容是需要扫描的文件夹和具体的json文件。
注意:传入的目录必须在程序路径内。 也就是说,如果程序目录在
D:\\Applications\Demo\
下,那么这个Configs的实际读取路径是D:\\Applications\Demo\Configs
程序会扫描该目录下所有以.json后缀结尾的文件,并加入配置中。
"LoadConfigurations":["Configs/","BizConfigs/BizConfig.json"],