如何将.NET Core类库中读取appsettings.json配置的方法改写成长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计622个文字,预计阅读时间需要3分钟。
这是位朋友问我遇到的问题,写篇随笔回答一下。
有两种方法,一种叫野蛮的方法+IConfiguration,另一种叫优雅的方法+IOptions。
先看野蛮的方法,比如在RedisClient中需要读取appsettings.json中的配置,可以直接使用IConfiguration。
1. 在Startup.cs中注入IConfiguration:csharppublic void ConfigureServices(IServiceCollection services){ services.Configure(Configuration.GetSection(AppSettings)); services.AddSingleton();}
2. 在RedisClient中读取配置:csharppublic class RedisClient{ private readonly IConfiguration _configuration;
public RedisClient(IConfiguration configuration) { _configuration=configuration; }
public string GetRedisConnectionString() { return _configuration[RedisConnectionString]; }}
再看优雅的方法,使用IOptions。
1. 创建AppSettings类,并标记IOptions:csharppublic class AppSettings{ public string RedisConnectionString { get; set; }}
2. 在Startup.cs中注入IOptions:csharppublic void ConfigureServices(IServiceCollection services){ services.Configure(Configuration.GetSection(AppSettings)); services.AddSingleton();}
3. 在RedisClient中读取配置:csharppublic class RedisClient{ private readonly AppSettings _appSettings;
public RedisClient(AppSettings appSettings) { _appSettings=appSettings; }
public string GetRedisConnectionString() { return _appSettings.RedisConnectionString; }}
以上就是两种方法的简单介绍,可以根据实际需求选择合适的方法。
这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 ——IConfiguration ,一种叫优雅的方法 —— IOptions 。
1)先看丑陋的方法
比如在RedisClient 中需要读取appsettings.json 中的 redis 连接字符串:
{ "redis": { "ConnectionString": "xxx" } }
需要在RedisClient 的构造函数参数中添加IConfiguration 接口,并通过它直接读取:
public class RedisClient { private readonly string _connectionString; public RedisClient(IConfiguration configuration) { _connectionString = configuration.GetSection("redis")["ConnectionString"]; } }
然后在 Startup 的ConfigureServices() 方法中进行注入:
public IConfigurationRoot Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IConfiguration>(Configuration); }
2)接着看优雅的方法
首先定义一个存放连接字符串的配置类 RedisOptions :
public class RedisOptions { public string ConnectionString { get; set; } }
然后给RedisClient 的构造函数参数中添加IOptions<RedisOptions> 接口,通过IOptions<RedisOptions> 读取配置,RedisClient 无需关心 appsettings.json :
public class RedisClient { private readonly RedisOptions _redisOptions; public RedisClient(IOptions<RedisOptions> redisOptions) { _redisOptions = redisOptions.Value; } }
而 appsettings.json 中的配置可以在 Startup 的ConfigureServices() 中注入进去:
services.AddOptions(); services.Configure<RedisOptions>(Configuration.GetSection("redis"));
(注:使用上面的 Configure 方法需要安装 nuget 包Microsoft.Extensions.Options.ConfigurationExtensions )
作为类库的设计者,你可以更贴心些,写个扩展方法进行上面的注入操作。
到此这篇关于.NET Core类库项目中如何读取appsettings.json中的配置的文章就介绍到这了,更多相关.NET Core读取appsettings.json配置内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!
本文共计622个文字,预计阅读时间需要3分钟。
这是位朋友问我遇到的问题,写篇随笔回答一下。
有两种方法,一种叫野蛮的方法+IConfiguration,另一种叫优雅的方法+IOptions。
先看野蛮的方法,比如在RedisClient中需要读取appsettings.json中的配置,可以直接使用IConfiguration。
1. 在Startup.cs中注入IConfiguration:csharppublic void ConfigureServices(IServiceCollection services){ services.Configure(Configuration.GetSection(AppSettings)); services.AddSingleton();}
2. 在RedisClient中读取配置:csharppublic class RedisClient{ private readonly IConfiguration _configuration;
public RedisClient(IConfiguration configuration) { _configuration=configuration; }
public string GetRedisConnectionString() { return _configuration[RedisConnectionString]; }}
再看优雅的方法,使用IOptions。
1. 创建AppSettings类,并标记IOptions:csharppublic class AppSettings{ public string RedisConnectionString { get; set; }}
2. 在Startup.cs中注入IOptions:csharppublic void ConfigureServices(IServiceCollection services){ services.Configure(Configuration.GetSection(AppSettings)); services.AddSingleton();}
3. 在RedisClient中读取配置:csharppublic class RedisClient{ private readonly AppSettings _appSettings;
public RedisClient(AppSettings appSettings) { _appSettings=appSettings; }
public string GetRedisConnectionString() { return _appSettings.RedisConnectionString; }}
以上就是两种方法的简单介绍,可以根据实际需求选择合适的方法。
这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 ——IConfiguration ,一种叫优雅的方法 —— IOptions 。
1)先看丑陋的方法
比如在RedisClient 中需要读取appsettings.json 中的 redis 连接字符串:
{ "redis": { "ConnectionString": "xxx" } }
需要在RedisClient 的构造函数参数中添加IConfiguration 接口,并通过它直接读取:
public class RedisClient { private readonly string _connectionString; public RedisClient(IConfiguration configuration) { _connectionString = configuration.GetSection("redis")["ConnectionString"]; } }
然后在 Startup 的ConfigureServices() 方法中进行注入:
public IConfigurationRoot Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IConfiguration>(Configuration); }
2)接着看优雅的方法
首先定义一个存放连接字符串的配置类 RedisOptions :
public class RedisOptions { public string ConnectionString { get; set; } }
然后给RedisClient 的构造函数参数中添加IOptions<RedisOptions> 接口,通过IOptions<RedisOptions> 读取配置,RedisClient 无需关心 appsettings.json :
public class RedisClient { private readonly RedisOptions _redisOptions; public RedisClient(IOptions<RedisOptions> redisOptions) { _redisOptions = redisOptions.Value; } }
而 appsettings.json 中的配置可以在 Startup 的ConfigureServices() 中注入进去:
services.AddOptions(); services.Configure<RedisOptions>(Configuration.GetSection("redis"));
(注:使用上面的 Configure 方法需要安装 nuget 包Microsoft.Extensions.Options.ConfigurationExtensions )
作为类库的设计者,你可以更贴心些,写个扩展方法进行上面的注入操作。
到此这篇关于.NET Core类库项目中如何读取appsettings.json中的配置的文章就介绍到这了,更多相关.NET Core读取appsettings.json配置内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

