.Net Standard(.Net Core)実装構成情報の取得

8297 ワード

一、前言
はい.Net Frameworkフレームワークには、Webconfigの構成を専門に取得する方法がありますが、.Net Coreまたは.Net Standardでは、プロファイル情報を直接取得する方法はありません.次に、構成情報の取得を実現します.
二、構成情報の取得の実現
はい.Net Coreでは、彼の構成情報のベクターはjsonファイルであり、私たちは今、.Net Frameworkと.Net Standard(.Net Core)フレームワークを含むすべてのプロジェクトがjsonファイルを構成のベクターとして計画しています.
まず、次のパッケージをNugetでロードします.
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.Options
Install-Package Microsoft.Extensions.Options.ConfigurationExtensions

jsonプロファイルの内容には、次のフォーマットがあります.
{
  "ConnectionStrings": {
    "CxyOrder": "Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;"
  },
  "Appsettings": {
    "SystemName": "PDF .NET CORE",
    "Date": "2017-07-23",
    "Author": "PDF"
  },
  "ServiceUrl": "https://www.baidu.com/getnews"
}

PFTConfigurationを作成します.csファイル、コードは以下の通りです. public class PFTConfiguration { /// /// PFTConfiguration.Configuration.GetConnectionString("CxyOrder"); /// PFTConfiguration.Configuration["ServiceUrl"]; /// PFTConfiguration.Configuration["Appsettings:SystemName"]; /// public static IConfiguration Configuration { get; set; } static PFTConfiguration() { Configuration = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); } /// /// /// /// json /// /// json /// public static T GetAppsettings(string key, string path) where T : class, new() { try { if (string.IsNullOrWhiteSpace(path)) { throw new Exception(""); } if (string.IsNullOrWhiteSpace(key)) { throw new Exception(" , key "); } var config = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true }) .Build(); var appconfig = new ServiceCollection() .AddOptions() .Configure(config.GetSection(key)) .BuildServiceProvider() .GetService>() .Value; return appconfig; } catch (Exception ex) { throw new Exception(" ( ) ", ex); } } /// /// /// /// json /// json /// public static string GetAppsettings(string key, string path) { try { if (string.IsNullOrWhiteSpace(path)) { throw new Exception(""); } if (string.IsNullOrWhiteSpace(key)) { throw new Exception(" , key "); } var config = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true, Optional = false }) .Build(); var appconfig = config.GetSection(key).Value; return appconfig; } catch (Exception ex) { throw new Exception(" ( ) ", ex); } } } }
3つの取得方法が定義されています
1、PFTConfiguration.Configuration["Appsettings:SystemName"]ファイルパスのデフォルトはappsettings.json、それからノードを通じて取得して、この方式は少し似ています.Net Frameworkで構成を取得する方法
2、PFTConfiguration.GetAppsettings(string key,string path)は、指定したプロファイルを取得し、ノードを指定し、Tオブジェクトとしてノードの内容を返す
3、PFTConfiguration.GetAppsettings(string key,string path)は、指定したプロファイルを取得し、ノードを指定し、ノードの内容を文字列で返します.