首页 > 移动平台 > 详细

.Net core 在类库中获取配置文件Appsettings中的值

时间:2019-07-14 21:34:32      阅读:136      评论:0      收藏:0      [点我收藏+]

    大多数情况,我们开发的程序中都含有很多个类库和文件夹,有时候,我们会遇到程序中的类库需要获取配置文件的信息的情况。

像dapper 中需要使用连接字符串的时候,那么我们一直从主程序中传值这是个不好的方式,所以我特地百度了好久,大部分都不是很完美,

所以今天我们来介绍的就是一种很方便的方式了。

    首先我们新建一个储存数据的类:

    public class AppSetting
    {
        public string ConnectionString{ get; set; }
    }

    我这里是获取连接字符串,所以就有一个连接字符串的属性。

    然后我们可以新建一个公共类,然后通过属性注入获取环境配置,像Development 的appsettings,再进入到appsettings.Development.json获取数据:

    public  class ConfigurationHelper
    {
        public IConfiguration config { get; set; }

        public ConfigurationHelper()
        {
            IHostingEnvironment env = MyServiceProvider.ServiceProvider.GetRequiredService<IHostingEnvironment>();
            config = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables()
                .Build();
        }

        public T GetAppSettings<T>(string key) where T : class, new()
        {
            var appconfig = new ServiceCollection()
                .AddOptions()
                .Configure<T>(config.GetSection(key))
                .BuildServiceProvider()
                .GetService<IOptions<T>>()
                .Value;
            return appconfig;
        }
    }

这里GetAppSettings方法是泛型方法,所以你可以随意新建储存数据的类。

然后就是使用它:这里是因为dapper要使用连接字符串:

    public class DapperHelper
    {
        public static IDbConnection GetConnection()
        {
           string connection = new ConfigurationHelper().GetAppSettings<AppSetting>("ConnectionStrings").ConnectionString; 
       IDbConnection conn
= new MySqlConnection(connection);
conn.Open();
     return conn;
}
}

其实这里还需要注意我们需要引用一些nuget包:

技术分享图片

到这里就很完美啦,结束。

.Net core 在类库中获取配置文件Appsettings中的值

原文:https://www.cnblogs.com/Ivan-Wu/p/11185770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!