配置

目前配置是基于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"],

results matching ""

    No results matching ""