创建一个 .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 ...

  10. ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings,及.NET Core控制台项目中读取AppSettings

    问: ASP.NET CORE MVC 如何在Filter中使用依赖注入来读取AppSettings 答: Dependency injection is possible in filters as ...

随机推荐

  1. 解决java.net.MalformedURLException: unknown protocol: c问题

    修改前代码: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builde ...

  2. 【java开发】分支语句、循环语句学习

    一.Java分支语句类型 if-else 语句 switch 关于if-esle语句可以拆分为三种 if语句 if(条件){语句块;} if-else语句if(条件语句){语句块;} if-else ...

  3. C指针详解(经典,非常详细)

    前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优 ...

  4. Eclipse工作常见问题总结

    一.Eclipse常见快捷键使用 自动完成单词:Alt+/ 重命名:Shift+Alt+r(统一改变字段或方法名) 生成getter/setter方法: Shift+Alt+s,然后r 删除当前行:C ...

  5. Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法

    最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...

  6. &quot;SOAP WebService &quot; 和 &quot;RESTful WebService&quot; 的定义分别是什么???

    一个个来,要知道区别,首先得知道各自的意义及用途web service采用Xml传输结构化的数据,轻量级跨平台而soap则是一种基于http的应用层通讯协议,同样采用xml编码,只不过soap又更进了 ...

  7. Css 小技巧总结

    相对偏移 指定left top等属性就能够够完美控制一个元素的位置 如: position:relative; left:2px; 今天遇到一个很好玩的问题,当两个并排浮动框,当一个框的长度太大时就会 ...

  8. jQuery Mobile 所有class选项,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) jQuery Mobile事件全解 jQuery Mobile 所有class选项 jQuery Mobile 所有data-*选项 jQuery Mobile 所 ...

  9. (转)c# 属性与索引器

    属性是一种成员,它提供灵活的机制来读取.写入或计算私有字段的值. 属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法. 这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性. 一个简单 ...

  10. hdu 5089 使做对k-1题最大概率的选题方案

    http://acm.hdu.edu.cn/showproblem.php?pid=5089 给出N道难度递增的题目,难度用可能做出的百分比表示,选出K道题目使得做出K-1道题目的概率最大. 选k题的 ...