構成情報を取得するさまざまな方法を学習して、今後のプロジェクトの構成をセットアップして使用するための最適なパスを決定できるようにしています。
を使用してさまざまな単一の設定にアクセスできます
var sm = new SmsSettings
{
FromPhone = Configuration.GetValue<string>("SmsSettings:FromPhone"),
StartMessagePart = Configuration.GetValue<string>("SmsSettings:StartMessagePart"),
EndMessagePart = Configuration.GetValue<string>("SmsSettings:EndMessagePart")
};
また、設定をカウントしたり、特定の設定の値を決定したりできるようにする必要があります。そのため、これらのタイプのことを行う解析メソッドを構築し、GetSectionが行ったことを想定した設定ファイルのセクション全体が必要でした。違う。
appsettingsファイル
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo;Trusted_Connection=True;MultipleActiveResultSets=true",
"ProductionConnection": "Server=(localdb)\\mssqllocaldb;Database=TestingConfigurationNetCoreTwo_Production;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"SmsSettings": {
"FromPhone": "9145670987",
"StartMessagePart": "Dear user, You have requested info from us on starting",
"EndMessagePart": "Thank you."
}
}
以下は、2つのスクリーンショットです
var section = Configuration.GetSection("ConnectionStrings");
返す
いくつかの質問があります。
この投稿によると
https://github.com/aspnet/Configuration/issues/716
GetSection("Name").Value
はnullを返します。GetChildren
を使用して子アイテムを取得する必要がありますBind
はオブジェクトに対して機能しない場合があります。プロパティがpublic
であることを確認してくださいGet<T>()
over bindを試してください。構成オブジェクトの強く型付けされたインスタンスを提供しますクラスの単純なPOCO(複雑なゲッター/セッター、すべてパブリック、メソッドなし)を試し、そこから取得します
GetSections()
をBind()
とともに使用すると、使用するpocoオブジェクトを作成できるはずです。
var poco= new PocoClass();
Configuration.GetSection("SmsSettings").Bind(poco);
これにより、すべての値が設定されたpocoオブジェクトが返されます。
GetSectionによって返されたオブジェクトでBindメソッドを使用すると、セクション内のキーと値のペアが、バインドされているオブジェクトの対応するプロパティにバインドされます。
例えば、
class ConnectionStrings {
public string DefaultConnection { get; set;}
public string ProductionConnection {get; set;}
}
..
var connectionStrings = new ConnectionStrings();
var section = Configuration.GetSection("ConnectionStrings").Bind(connectionStrings);
「GetSection」と(key、value)を含むセクションが必要な場合は、これを試してください。
Configuration.GetSection("sectionName").GetChildren().ToList()
値を持つキーのコレクションを取得し、LinQで操作できます