企业网站管理系统登录,做外贸搜索外国客户的网站,怎么做网站的搜索引擎,网站开发包括网站过程13 | 配置绑定#xff1a;使用强类型对象承载配置数据要点#xff1a;1、支持将配置值绑定到已有对象2、支持将配置值绑定到私有属性上继续使用上一节代码首先定义一个类作为接收配置的实例class Config
{public string Key1 { get; set; }public bool Key5 { get; set; }pub… 13 | 配置绑定使用强类型对象承载配置数据要点1、支持将配置值绑定到已有对象2、支持将配置值绑定到私有属性上继续使用上一节代码首先定义一个类作为接收配置的实例class Config
{public string Key1 { get; set; }public bool Key5 { get; set; }public int Key6 { get; set; }
}接着看一下配置文件appsettings.json{Key1: Value1,Key2: Value2,Key5: true,Key6: 0
}新增一个引用包Microsoft.Extensions.Configuration.Binder这个包的作用就是让我们能够很方便的把配置绑定到强类型上面去主程序var builder new ConfigurationBuilder();
builder.AddJsonFile(appsettings.json, optional:true, reloadOnChange:true);
var configurationRoot builder.Build();var config new Config()
{Key1 config key1,Key5 false,Key6 100
};configurationRoot.Bind(config);Console.WriteLine($Key1:{config.Key1});
Console.WriteLine($Key5:{config.Key5});
Console.WriteLine($Key6:{config.Key6});启动程序输出如下Key1:Value1
Key5:True
Key6:0可以看出绑定的字段都是从配置中读出来的实际上通常意义来讲配置文件不会这么简单一般都是有嵌套格式{Key2: Value2,Key6: 0,OrderService: {Key1: order key1,Key5: true,Key6: 200}
}在这种情形下需要把 p 绑定给 config 对象configurationRoot.GetSection(OrderService).Bind(config);这样就可以对不同的配置进行分组并且分别绑定避免配置混在一起启动程序输出如下Key1:order key1
Key5:True
Key6:200也就是说可以从任意的节来读取配置并且绑定到类型上面这里定义的所有类型所有的字段都是 public但有一些场景下面可能是 private对于私有的字段默认情况下是不会去绑定的也不允许赋默认值可以在定义时设置class Config
{public string Key1 { get; set; }public bool Key5 { get; set; }public int Key6 { get; private set; } 100;
}主程序var config new Config()
{Key1 config key1,Key5 false
};configurationRoot.GetSection(OrderService).Bind(config);启动程序输出如下Key1:order key1
Key5:True
Key6:100可以看到 Key6 的值是100没有发生变化而配置中的值是200要让私有变量生效实际上 Bind 还有另外一个参数configurationRoot.GetSection(OrderService).Bind(config,binderOptions { binderOptions.BindNonPublicProperties true; });启动程序输出如下Key1:order key1
Key5:True
Key6:200这样一来私有字段也都可以从配置里面赋值了