1. ホーム
  2. c#

[解決済み] .NET Coreでappsetting.jsonセクションをDictionaryに読み込むには?

2023-06-02 06:10:26

質問

私は、.NET Core startup.csでappsettings.jsonセクションを強く型付けされたオブジェクトに読み込むことに精通しています。たとえば、次のようになります。

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

//In Startup.cs
services.Configure<CustomSection>(Configuration.GetSection("CustomSection"));

//Inject an IOptions instance
public HomeController(IOptions<CustomSection> options) 
{
    var settings = options.Value;
}

私はappsettings.jsonセクションを持っており、そのキー/値のペアは時間とともに数と名前が変化します。したがって、新しいキー/値ペアはクラスのコード変更を必要とするので、クラスでプロパティ名をハードコードすることは実用的ではありません。いくつかのキー/値のペアの小さなサンプルです。

"MobileConfigInfo": {
    "appointment-confirmed": "We've booked your appointment. See you soon!",
    "appointments-book": "New Appointment",
    "appointments-null": "We could not locate any upcoming appointments for you.",
    "availability-null": "Sorry, there are no available times on this date. Please try another."
}

このデータをMobileConfigInfo Dictionaryオブジェクトにロードし、IOptionsパターンを使用してMobileConfigInfoをコントローラに注入する方法はありますか?

どのように解決するのですか?

この場合 Configuration.Bind(settings);startup.cs クラス

そして、あなたの設定クラスは次のようになります。

public class AppSettings
{
    public Dictionary<string, string> MobileConfigInfo
    {
        get;
        set;
    }
}

お役に立てれば幸いです。