创建一个 .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. cmd启动mysql,服务名无效

    通过cmd无法启动mysql 解决办法: 在计算机管理(或者win+R,输入services.msc)中打开服务,查看mysql服务的名称是否正确. 键入正确的名称启动mysql.

  2. Ftrace的部分使用方法

    ftrace主要是用于调试linux kernel调度相关的一个工具,也可用于分析部分kernel性能问题. 相关ftrace的介绍可以参考:kernel/msm-4.9/Documentation/ ...

  3. Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

    字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...

  4. Java实现 LeetCode 449 序列化和反序列化二叉搜索树

    449. 序列化和反序列化二叉搜索树 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建. 设计一个算法 ...

  5. java实现正六面体染色

    ** 正六面体染色** 正六面体用4种颜色染色. 共有多少种不同的染色样式? 要考虑六面体可以任意旋转.翻转. 参考答案: 240 Burnside引理,正方体涂色问题 (n^6 + 3*n^4 + ...

  6. Java 8 新特性——检视阅读

    Java 8 新特性--检视阅读 参考 Java 8 新特性--菜鸟 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的 ...

  7. 【JAVA习题二十八】海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

    package erase; import java.util.Scanner; public class 猴子分桃 { public static void main(String[] args) ...

  8. Hadoop之hadoop fs和hdfs dfs、hdfs fs三者区别

      适用范围 案例 备注 小记 hadoop fs 使用范围最广,对象:可任何对象       hadoop dfs 只HDFS文件系统相关       hdfs fs 只HDFS文件系统相关(包括与 ...

  9. iOS-Core Foundation框架到Foundation桥接的三种方式

    温故知新.勤总结,才能生巧!这次总结一下 :Core Foundation框架到Foundation桥接的三种方式 Foundation提供OC的基础类(像NSObject).基本数据类型等. Cor ...

  10. Android下的缓存策略

    Android下的缓存策略 内存缓存 常用的内存缓存是软引用和弱引用,大部分的使用方式是Android提供的LRUCache缓存策略,本质是个LinkedHashMap(会根据使用次数进行排序) 磁盘 ...