注入获取

注入获取通过iconfiguration直接获取的方法官方文档里就有,可以直接看

如:appsettings.json

{
  "position": {
    "title": "编辑器",
    "name": "joe smith"
  },
  "mykey": "my appsettings.json value",
  "logging": {
    "loglevel": {
      "default": "information",
      "microsoft": "warning",
      "lifetime": "information"
    }
  },
  "allowedhosts": "*"
}

可以用注入的iconfiguration,用冒号分隔的形式取值,如下

 var name = configuration["position:name"];

实体类获取

单个获取对应多个组合的值就不太方便,比如logging最好能用一个类类直接接收,方法如下:
先定义一个跟json节点对应的类

 public class logging
  {
    public loglevel loglevel { get; set; }
  }
  public class loglevel
  {
    public string default { get; set; }
    public string microsoft { get; set; }
    public string lifetime { get; set; }
  }

然后在startup的里configureservices增加

services.configure<logging>(configuration.getsection("logging"));

调用的地方直接注入

 private readonly logging _config;
 public homecontroller(ioptions<logging> config)
 {
   _config = config.value;
 }

静态类获取

如果是在静态类里使用,可以在startup里的构造函数中这样写

public startup(iconfiguration configuration)
    {
      configuration = configuration;
      configuration.getsection("logging").bind(mysettings.setting);
    }

使用iconfigurationsection的bind方法将节点直接绑定至一个实例上,注意示例必须是初始化过的。

public static class mysettings
  {
    public static logging setting { get; set; } = new logging();
  }

有了静态类的属性在在静态类里就可以使用了。

到此这篇关于.net core 静态类获取appsettings的方法的文章就介绍到这了,更多相关.net core获取appsettings内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!