ASP.NET CORE配置选项(下篇)

本篇文章使用的配置项对应POCO对象:

public class Profile
{
        public Gender Gender { get; set; }
        public int Age { get; set; }
        public ContactInfo ContactInfo { get; set; }
}
public class ContactInfo
{
        public string EmailAddress { get; set; }
        public string PhoneNo { get; set; }      
}

1、IOptionsSnapshot

在上一篇文章中我们介绍了IOptions和IOptionsMonitor,这里我们讲一下IOptionsSnapshot。我们看一下下面这个配置文件:

{
  "foo": {
    "gender": "Male",
    "age": "18",
    "contactinfo": {
      "emailAddress": "foobar.outlook.com",
      "phoneno": "123"
    }
  },
  "bar": {
    "gender": "Female",
    "age": "20",
    "contactinfo": {
      "emailAddress": "foobar.outlook.com",
      "phoneno": "456"
    }
  }
}

这里有2个配置,配置项的字段是一样的,但是每个配置都有自己的名称:foo和bar。这就像是一个班级里面有很多学生,每个学生都拥有自己的属性(姓名、年龄等)。

这种配置的使用方式和上篇文章介绍了那两种其实区别不大,下面看一下代码:

这是在startup的ConfigureServices函数中的代码:

var configuration1 = new ConfigurationBuilder().AddJsonFile(path: "profile1.json", optional: false, reloadOnChange: true).Build();
            services.AddOptions().Configure<Profile>("foo", configuration1.GetSection("foo"));
            services.AddOptions().Configure<Profile>("bar", configuration1.GetSection("bar"));

这是获取配置的代码:

var fooProfile = _snapOptions.Get("foo");
var barProfile = _snapOptions.Get("bar");

_snapOptions是定义的全局变量:IOptionsSnapshot<Profile> _snapOptions,通过依赖注入给它赋值。

这种方式其实是给配置取了一个名字,然后通过名字去获取配置。

 2、MemoryConfigurationSource

前面我们都是用配置文件,因为这是最常见一种配置方式,下面我们看一下使用内存来配置。

var memorySource = new Dictionary<string, string>
            {
                ["gender"] = "Male",
                ["age"] = "20",
                ["ContactInfo:emailaddress"] = "foo@outlook.com",
                ["ContactInfo:phoneno"] = "123"
            };

var memeoryConfig = new ConfigurationBuilder().AddInMemoryCollection(memorySource).Build();
services.AddOptions().Configure<Profile>(memeoryConfig);

gender和age是Profile类的属性,所以直接赋值即可。但是后面两个是ContactInfo类的属性,所以需要把ContactInfo放到前面,然后用冒号引用这个类的属性。这里注意一定是冒号,而不是逗号。

获取配置的方式和前面一样,这里就不再赘述了。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值