序文
止められない対向.NETコア。今では、そうしなかったし、我々はそれを遵守します。それを理解し、それを学びます。今日は類似点と相違点の前とコンフィギュレーション・ファイルの読み取りモードの.NETバージョンを見てみましょう、ここでは、.NETのコアの基本を、それらを繰り返しません。
PS:アップデート、あなたが読むための正しい方法を選ぶ何を教えてください自分の実際の状況と併せて、プロファイル情報を読み取るためのさまざまな方法を更新。
の実装
我々は最初のオリジナルを見てJSONファイルは次のようです:
{ "ロギング":{ "IncludeScopes":偽、 "ログレベル":{ "デフォルト": "警告" } }、 "テスト":{ "1" 123、 "二つの": "456"、 "三"。 "789"、 "コンテンツ":{ "コーン":111、 "CTWO": "潇十一郎" } } }
JSONは、プロファイル情報を読み取り、我々はインストールする必要がありますMicrosoft.Extensions.Configuration.Json
包,如下:
そして、次のことを達成するために、プロバイダをConfigurationBuilderするように設定JSONコールAddJsonFileを追加します。
私たちは、構成プロパティを変更します
パブリック静的IConfiguration設定{取得します。セットする; }
その後ConfigureServicesは JSONがConfigurationBuilderに配置されたプロバイダに追加されます
VARビルダー=新しいConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile( "appsettings.json"); 設定= builder.Build(); services.AddSingleton <IConfiguration>(構成); //配置IConfiguration的依赖
それは他の場所で呼び出された場合、あなたは、もちろん、私たちが読むことができ、設定した、我々はコンストラクタIConfigurationを通じて注入する必要があります
読み取りモード:次のように読み取るためにキーを使用します。
読み取り専用IConfigurationの_configurationプライベート; //構成注入 公衆にHomeController(IConfiguration構成) { _configuration =構成; } 公共IActionResultインデックス() { //の方法によって得られたキー値 VAR 1 = _configuration [ "テスト:ワン"]; // 123 VAR conw = _configuration [ "試験:内容:CTWO"]; // シャオ壽一郎 }
二つの方法読む:使用GetValue<T>
、インストールするには、Microsoft.Extensions.Configuration.Binder
次のようにパッケージを、読み取ります。
読み取り専用IConfiguration _configurationプライベート; //構成注入 公衆はにHomeController(IConfiguration構成) { _configuration =構成; } 公共IActionResultインデックス() { //第二の方法<T>(文字列キー)GetValueメソッド第1の実施形態は、キーの直接アクセスすることにより得られますあなたは、2つのデフォルト値を指定見つけることができない場合は VAR TWO = _configuration.GetValue <整数>( "テスト:ワン"); // 123 VAR = _configuration.GetValue三<文字列>( "テスト:スリー"); // 789 VAR CTWO = _configuration.GetValue <文字列>( "テスト:内容:CTWO"); // シャオShiyiラング VAR 4 = _configuration.GetValue <文字列>( "テスト:4"、 " 私はデフォルト値です");//私は、デフォルト値の午前 }
特別な指示:ジェネリックGetValueメソッドフォームは2は、キーが存在しない場合は、他ではまず、GetValueメソッド(「キー」、はdefaultValue)設定指定されたデフォルト値である、それはGetValueメソッド(「キー」)で、オーバーロードされています。結果の種類はデフォルト(T)、第2の結果は、指定されたデフォルト値です。
次のように両方の読み出しモードデバッガは次のとおりです。
2の実装
注意:あなたはNuGetの導入が必要です。Microsoft.Extensions.Options.ConfigurationExtensions
次のように①私たちは、新しいカスタムAPI JSONでappsettings.jsonプロフィール:
{ "ログ":{ "IncludeScopes":偽、 "ログレベル":{ "デフォルト": "警告" } }、 "API":{ "URL": "にhttp:// localhost:8080 /"、 "getclub" : "API /クラブ" } }
②その後、我々は静的クラスを定義して、クラス型の変数を宣言IConfigurationSection
プライベート静的IConfigurationSection _appSection = NULL;
次のように③静的メソッドのAppSetting値の項目を書き、コンフィギュレーションを取得:
パブリック静的文字列のAppSetting(文字列キー) { 文字列STR = String.Emptyを。 (!_appSection.GetSection(キー)= NULL)であれば { STR = _appSection.GetSection(キー).Valueの。 } STRを返します。 }
④IConfigurationSectionは、次のように初期値を設定する必要があります。
パブリック静的ボイドSetAppSetting(IConfigurationSection部) { _appSection =手段と }
⑤その後、JSON項目によって読み取ることができる対応する値を書き込みます。
パブリック静的文字列GetSite(列apiName) { のAppSetting(apiName)を返します。 }
⑥上記の手順では、基本的にコードを読むには、すべて、次のように、方法Startup.csを設定するために読まれるべき最も重要なステップ、JSON形式の設定ファイルの最後に残った1を終了しています。
このように、我々は簡単に私たちが望む構成アイテムを取得することができ、かつ、次のように全体のCSコードは次のとおりです。
/// <summary> /// 配置信息读取模型 /// </summary> public static class SiteConfig { private static IConfigurationSection _appSection = null; /// <summary> /// API域名地址 /// </summary> public static string AppSetting(string key) { string str = string.Empty; if (_appSection.GetSection(key) != null) { str = _appSection.GetSection(key).Value; } return str; } public static void SetAppSetting(IConfigurationSection section) { _appSection = section; } public static string GetSite(string apiName) { return AppSetting(apiName); } }
最后 ,我们来跑一下演示效果如下:
1|0 补充
事务总是不断发展,有更优的做法,那就一定要摒弃以前不太美的实现,现在补充一种实现获取配置文件的方法,更为优雅美观:
NuGet引入:Microsoft.Extensions.Configuration 包
在appsetting中加入短信相关配置信息:
在Startup.cs中重写:
public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; }
新建一个静态类:ConfigurationKeys
public class ConfigurationKeys { public static string SMS_APP_URL = "sms:url"; public static string SMS_APP_ID = "sms:appid"; public static string SMS_APP_SECRET = "sms:secret"; public static string SMS_VERIFY_CODE_TEMPLATE = "sms:verifycodetemplate"; }
1|1使用
在具体的控制器或者类中注入:
private readonly IConfiguration _config; public SmsServices(IConfiguration config) { _config = config; }
var templateId = _config[ConfigurationKeys.SMS_VERIFY_CODE_TEMPLATE];
完!