> 凡是涉及到调用外部接口的,做成可配置
比如经常会用到调用开放平台接口的情况,可以把开放平台的地址放在`appsettings.json`中。
比如,需要在`appsettings.json`中加一个`APP`的节点。
```
{
......
"App": {
"rate": "5", // 模块上传频率,大于5秒
"shixugo": "0", // 是否开通时序
"istest": "0", // 是否测试,会记录测试日志,比较细
"testmac": "", // 当前测试模块号,当istest=1时使用,多个模块逗号分隔
"isvalidmac": "0", // 是否验证模块内容
"isdealdl": "0", //是否处理电量
"isudptest": "1" //是否启用查看来自模块的UDP指令
},
......
}
```
需要一个类来描述配置节点。
```
public class App
{
///
/// 模块上传频率,大于5秒
///
public string rate { get; set; }
///
/// 是否开通时序
/// 1开通0没有开通
///
public string shixugo { get; set; }
///
/// 是否测试,会记录测试日志,比较细
/// 1测试0不测试
///
public string istest { get; set; }
///
/// 当前测试模块号,当istest=1时使用,多个模块以逗号分隔
///
public string testmac { get; set; }
///
/// 是否验证模块内容
/// 1为验证0不验证
///
public string isvalidmac { get; set; }
///
/// 是否处理电量
/// 1测试0不测试
///
public string isdealdl { get; set; }
///
/// 是否打印从设备来的指令,1是,0不是
///
public string isudptest { get; set; }
}
```
以上,`App`类中的属性与`appsettings.json`中的`key`保存一致。
最后在`Startup.cs`中配置:
```
var app1 = new App();//应用程序帮助类
configuration.GetSection("App").Bind(app1);
services.AddSingleton(app1);
ChangeToken.OnChange(() => configuration.GetReloadToken(), () =>
{
configuration.GetSection("App").Bind(app1);
});
```