博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在.NET Core控制台应用程序中使用强类型配置
阅读量:5289 次
发布时间:2019-06-14

本文共 1865 字,大约阅读时间需要 6 分钟。

想象一下,你写一个控制台应用程序,你想要从配置文件中以强类型方式读取配置。

.NET Core 可以帮助我们解决。 通常我会在ASP.NET Core MVC中演示,但简单起见,只在控制台应用程序中演示。

 

让我们创建两个配置类,用于保存应用程序和模块名称。

public class MySettings{    public string ApplicationName { get; set; } }public class MyModuleSettings{    public string ModuleName { get; set; }}

 

 

应用程序配置文件如下所示:

{  "ApplicationName": "My sample application",  "SectionA": {    "ModuleName": "My sample module"  }}

 

 

最后,让我们在应用程序中使用它。

public class Program{    public static void Main(string[] args)    {        var builder = new ConfigurationBuilder()            .SetBasePath(Directory.GetCurrentDirectory())            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)            .AddEnvironmentVariables();        IConfigurationRoot configuration = builder.Build();        var settings = new MySettings();        configuration.Bind(settings);        var moduleSettings = new MyModuleSettings();        configuration.GetSection("SectionA").Bind(moduleSettings);        Console.WriteLine($"My application name is '{settings.ApplicationName}'");        Console.WriteLine($"My module name is '{moduleSettings.ModuleName}'");        Console.ReadLine();    }}

所有的实现都是通过“Bind”方法。

不要忘记添加所需的依赖关系。 project.json应该包含以下内容:

{  "version": "1.0.0-*",  "buildOptions": {    "emitEntryPoint": true  },  "dependencies": {    "Microsoft.Extensions.Configuration": "1.1.0",    "Microsoft.Extensions.Configuration.Binder": "1.1.0",    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",    "Microsoft.Extensions.Configuration.Json": "1.1.0",    "Microsoft.NETCore.App": {      "type": "platform",      "version": "1.0.1"    }  },  "frameworks": {    "netcoreapp1.0": {      "imports": "dnxcore50"    }  }}

运行结果:

ConsoleApp.Output.png

在.NET Core应用程序中使用强类型配置类非常容易!希望本文对你有所帮助~。

转载于:https://www.cnblogs.com/smallprogram/p/6477715.html

你可能感兴趣的文章
Loader、CursorLoader、AsyncTaskLoader
查看>>
crm-vue项目上线前对加载速度以及兼容IE的一些方法
查看>>
首页列表显示全部问答,完成问答详情页布局
查看>>
sprintf,你知道多少?
查看>>
oc 中使用switch需要注意点
查看>>
认识Caffe与Caffe2
查看>>
Ubuntu系统---“NVIDIA 驱动+CUDA+cuDNN ”之后 OpenCV安装
查看>>
数据结构之最小堆的实现C++版
查看>>
cocos2d-js 遮挡层
查看>>
python学习笔记:模块——xpinyin(拼音)、hashlib(加密)
查看>>
Linux进程通信之System V共享内存
查看>>
Web前端开发工程师的具备条件
查看>>
为什么要用日志框架 Logback 基本使用
查看>>
Cannot open precompiled header file: 'Debug/<Project-Name>.pch': No such fil
查看>>
实用Android开发工具和资源精选
查看>>
TileMap
查看>>
设计模式-中介者模式(Mediator)
查看>>
JS属性大全
查看>>
JavaScript位运算符 2
查看>>
XE 画矩形实现拖拉改变大小(属性)
查看>>