创建一个 .NET Core控制台程序

  1. 添加依赖
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.FileExtensions
  • Microsoft.Extensions.Configuration.Json
  1. 添加一个Config文件夹,用来存放自定义配置文件。
  2. 新建一个json配置文件,名字随便取。
{
"StudentsOptions": {
"BeginTime": "2020-06-28 21:05:00",
"URL": "http://yezs.wyjycyw.com/report",
"Students": [
{
"Name": "学生姓名",
"Address": "住址",
"Identity": "身份证号码",
"ParentName": "监护人姓名",
"Mobile": "监护人手机",
"SchoolId": "学校ID"
},{...}
]
}
}
  1. main函数中加入json文件,如下:
static void Main(string[] args)
{
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("//Config//students.json", true, true)
.Build();
}

当然到这里,你可以使用Configuration直接读取,但是我的配置文件比较复杂,有可能是一个对象数组,所以采用Options选项配置会更好一点。

使用Options接口

  1. 引入Microsoft.Extensions.Options
PM>Package-install Microsoft.Extensions.Options
  1. 新建一个配置类
public class StudentsOptions
{
public const string name = "StudentsOptions";
public string BeginTime { get; set; }
public string URL { get; set; }
public List<Student> Students { get; set; }
}
  1. 添加一个Student的实体类,来存放学生信息
public class Student
{
public string Name { get; set; }
public string Identity { get; set; }
public string ParentName { get; set; }
public string Mobile { get; set; }
public string SchoolId { get; set; }
public string Address { get; set; }
}
  1. 修改Main函数
static void Main(string[] args)
{
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("//Config//students.json", true, true)
.Build(); service.Configure<StudentsOptions>(config.GetSection(StudentsOptions.name)); }

此时报错了,无法从IConfigurationSection转换成Action。

十分不解,最后发现是少了扩展类,Microsoft.Extensions.Options.ConfigurationExtensions

我们通过 NuGet 添加这个

PM>Install-Package Microsoft.Extensions.Options.ConfigurationExtensions

问题得到解决了。

5. 补充后续代码

static void Main(string[] args)
{
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("//Config//students.json", true, true)
.Build(); //注入
service.Configure<StudentsOptions>(config.GetSection(StudentsOptions.name)); var provider = service.BuildServiceProvider(); var studentsOptions = provider.GetService<IOptionsMonitor<StudentsOptions>>().CurrentValue;
}

这样就可以很方便的把配置文件加载进来了,同时我们可以加上文件系统,对配置文件进行监听。

6. 备注

如果只是在Main方法使用,其实我们不需要用ServiceCollection来注入,用下面这种方法更方便简洁。

static void Main(string[] args)
{
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("//Config//students.json", true, true)
.Build(); var studentsOptions = config.GetSection(StudentsOptions.name).Get<StudentsOptions>();
}

.NET Core控制台利用【Options】读取Json配置文件的更多相关文章

  1. [.NET Core] 简单读取 json 配置文件

    简单读取 json 配置文件 背景 目前发现网上的 .NET Core 读取配置文件有点麻烦,自己想搞个简单点的. .NET Core 已经不使用之前的诸如 app.config 和 web.conf ...

  2. C# 读取Json配置文件

    今天需要用到读取Json配置文件的helper   结果竟然没找到合适的    微软自己有一个 不过不支持.Net fw 4.0 于是自己在NewTonSoft.Json的基础上  加了点小小的封装  ...

  3. fastjson读取json配置文件

    fastjson读取json配置文件: ClassLoader loader=FileUtil.class.getClassLoader(); InputStream stream=loader.ge ...

  4. .Net Core控制台应用加载读取Json配置文件

    ⒈添加依赖 Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions Microsoft ...

  5. ASP.NET CORE入门之读取Json配置文件

    首先新建一.net core控制台项目,命名为jsonReader 然后选中引用,选择NuGet包管理器,点击浏览引入mircosoft.aspnetcore.all并安装 选中解决方案,填加,新建项 ...

  6. .net core读取json配置文件

    一.新建.net core控制台程序 二.通过Nuget引入 Microsoft.Extensions.Configuration和microsoft.extensions.configuration ...

  7. 【NET Core】.NET Core中读取json配置文件

    在.NET Framework框架下应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别用 Sy ...

  8. .Net Core Web应用加载读取Json配置文件

    ⒈添加Json配置文件并将“复制到输出目录”属性设置为“始终复制” { "Logging": { "LogLevel": { "Default&quo ...

  9. NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions

    .NET Core 控制台程序没有 ASP.NET Core 的 IWebHostBuilder 与 Startup.cs ,那要读 appsettings.json.注依赖.配日志.设 IOptio ...

随机推荐

  1. break 与 continue 的作用 详解

    1.break 用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环. 使用说明: (1)只能在循环体内和switch语句体内使用br ...

  2. Go 语言入门教程:安装

    关注公众号:雨哥写 python. 学习 Go 语言,比较下和 python 的用法,争取对 python 有更深的理解. 为什么学 Go 我主要使用 python 语言,其他语言用得不多,希望学一门 ...

  3. Java实现 LeetCode 575 分糖果(看看是你的长度小还是我的种类少)

    575. 分糖果 给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果.你需要把这些糖果平均分给一个弟弟和一个妹妹.返回妹妹可以获得的最大糖果的种类数. 示例 1: 输入 ...

  4. Java实现 蓝桥杯VIP 算法训练 完数

    问题描述 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如,6的因子为1.2.3,而6=1+2+3,因此6就是"完数".又如,28的因子为1.2.4. ...

  5. Java实现 LeetCode 8 字符串转换整数(atoi)

    8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...

  6. java算法集训代码填空题练习1

    1 报数游戏 有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止.问剩下第几个孩子.下面的程序以10个孩子为例,模拟了这个过程,请完善之 ...

  7. 使用请求头认证来测试需要授权的 API 接口

    使用请求头认证来测试需要授权的 API 接口 Intro 有一些需要认证授权的接口在写测试用例的时候一般会先获取一个 token,然后再去调用接口,其实这样做的话很不灵活,一方面是存在着一定的安全性问 ...

  8. 纯 HTML/CSS 高仿 Win10 加载动画

    自己做的超高仿Win10加载动画(应该是全网最像的 HTML 实现了),自己想用就拿去用吧 转圈加载 在线演示 HTML: <div class="loading"> ...

  9. python学习日记2019.9.2

    1 定义一个字符串对象str str.title() #将字符串中用空格分隔的字符段首字母大写 str.rstrip() #将字符串末的空格删去 str.strip() #将字符串首末的空格删去 st ...

  10. 如何用Python从海量文本抽取主题?

    摘自https://www.jianshu.com/p/fdde9fc03f94 你在工作.学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑 ...