私は次の定義を含む構成でasp.net-コアウェブAPIプロジェクトを持っている:設定から空のリストの代わりにプロパティをnullに初期化するのはなぜですか?
"MyClass": {
"Value1": 1,
"Value2": []
}
この構成は、以下のクラスを初期化するために使用されます。
public class MyClass
{
public int Value1 { get; set; }
public int[] Value2 { get; set; }
}
このクラスが初期化され
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyClass>(Configuration.GetSection("MyClass"));
services.AddSingleton<AService>();
services.AddMvc();
}
:Startup.cs
でConfigureServices
方法で次のコードを使用して、コンフィギュレーション - 私は、プロパティを使用して初期化することが期待される値であり、私はValue2
はそれが空のリストのような構成に表示されないにもかかわらず、null
であることがわかり、コンストラクタで
public FeedbackRetrievalService(IOptions<MyClass> myclass)
{
_myclass = myclass;
}
:私のサービスのコンストラクタは次のようになります。私は、プロパティが構成からフィールドが欠落している場合にのみnull
で初期化されることを期待しました。フィールドを空のリストとして初期化できる方法はありますか?
'Value2'のセッターの中にロジックを作成し、' null'の 'value'が空のリストに解決されるようにすることができます。 – DiskJunky
IList、[]の代わりにIEnumerableのような動的なコレクションを試してみることもあります。 –
@DiskJunky - それは間違いなく私が今持っているよりもはるかにエレガントな解決ですが、設定から直接これを行うにはとにかくかどうか疑問に思っています –