> 凡是涉及到调用外部接口的,做成可配置 比如经常会用到调用开放平台接口的情况,可以把开放平台的地址放在`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); }); ```