.Net Standard(.Net Core)実装構成情報の取得
8297 ワード
一、前言
はい.Net Frameworkフレームワークには、Webconfigの構成を専門に取得する方法がありますが、.Net Coreまたは.Net Standardでは、プロファイル情報を直接取得する方法はありません.次に、構成情報の取得を実現します.
二、構成情報の取得の実現
はい.Net Coreでは、彼の構成情報のベクターはjsonファイルであり、私たちは今、.Net Frameworkと.Net Standard(.Net Core)フレームワークを含むすべてのプロジェクトがjsonファイルを構成のベクターとして計画しています.
まず、次のパッケージをNugetでロードします.
jsonプロファイルの内容には、次のフォーマットがあります.
PFTConfigurationを作成します.csファイル、コードは以下の通りです.
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)は、指定したプロファイルを取得し、ノードを指定し、ノードの内容を文字列で返します.
はい.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)は、指定したプロファイルを取得し、ノードを指定し、ノードの内容を文字列で返します.