5

私がこのようなものを持っているとしましょうconfig.json:

{
  "CustomSection": {
    "A": 1,
    "B": 2
  }
}

IConfigurationオブジェクトを使用して特定の設定、つまり を取得できることはわかっていますconfiguration.Get("CustomSection:A")が、階層全体を取得できますか? を試してみると結果がconfiguration.Get("CustomSection")出るnullので、これはデフォルトではサポートされていないと思います。

私の使用例は、個々の設定を取得する必要なく、構成辞書全体を一度に取得することです。一部のプロパティはコンパイル時に認識されない場合があります。

4

6 に答える 6

1

編集: Core の 1.0 リリース用にこの回答を更新します。

これは、次のように厳密に型指定されたオブジェクトを使用する場合に可能になります。

public class CustomSection 
{
   public int A {get;set;}
   public int B {get;set;}
}

//In Startup.cs
services.Configure<CustomSection>(Configuration.GetSection("CustomSection"));
//You can then inject an IOptions instance
public HomeController(IOptions<CustomSection> options) 
{
    var settings = options.Value;
}
于 2015-08-10T23:07:08.197 に答える
1

このような未知のキーを持つ複数のサブセクションを読み込んでバインドすることができました (構文は投稿以降わずかに変更されています。github プロジェクトとその単体テストに注目して、現在どのように機能しているかを確認することをお勧めします):

var objectSections = Configuration.GetSection("CustomObjects").GetChildren();
var objects = objectSections.ToDictionary(x => x.Key, x =>
{
    var obj = new CustomObject();
    ConfigurationBinder.Bind(x, obj);
    return obj ;
});
于 2016-03-11T00:11:27.493 に答える
0

を使用してConfigurationBinder、すべてを次のように読み取ることができますDictionary<string, string>

例として使用できるいくつかのテスト ケースを次に示します: https://github.com/aspnet/Configuration/blob/dev/test/Microsoft.Framework.Configuration.Binder.Test/ConfigurationCollectionBindingTests.cs

于 2015-08-11T02:24:07.000 に答える