ServiceStack 和 .NET Core AppSettings 复杂对象
ServiceStack and .NET Core AppSettings complex object
我正在使用文档 (https://docs.servicestack.net/host-configuration) 中的这个将我的 appsettings.json
加载到 ServiceStack 中:
AppSettings = new NetCoreAppSettings(Configuration)
我的 appsettings.json
有这一行:
"test": [ "a", "b" ]
然而,当我执行 var allSettings = AppSettings.GetAll();
并查找我的密钥 test
时,它是 null
。
我知道 .NET 核心仅通过使用 .Bind() 支持 list/dictionary,这有效:
List<string> test = new List<string>();
Configuration.GetSection("test").Bind(test);
由于 ServiceStack 有 GetList
、GetDictionary
甚至 Get<T>
等方法,我认为我做错了什么,因为它不起作用。
所有 ServiceStack 的 AppSettings providers deserializes string scalar values using JSV Format 所以如果你想使用它的 GetList()
或 Get<T>
你的 appsettings.json 配置将需要看起来像:
"test": "a,b,c"
或者
"test": "[a,b,c]"
您可以从中解决:
var test = AppSettings.GetList("test"); // or
var test = AppSettings.Get<List<string>>("test");
我正在使用文档 (https://docs.servicestack.net/host-configuration) 中的这个将我的 appsettings.json
加载到 ServiceStack 中:
AppSettings = new NetCoreAppSettings(Configuration)
我的 appsettings.json
有这一行:
"test": [ "a", "b" ]
然而,当我执行 var allSettings = AppSettings.GetAll();
并查找我的密钥 test
时,它是 null
。
我知道 .NET 核心仅通过使用 .Bind() 支持 list/dictionary,这有效:
List<string> test = new List<string>();
Configuration.GetSection("test").Bind(test);
由于 ServiceStack 有 GetList
、GetDictionary
甚至 Get<T>
等方法,我认为我做错了什么,因为它不起作用。
所有 ServiceStack 的 AppSettings providers deserializes string scalar values using JSV Format 所以如果你想使用它的 GetList()
或 Get<T>
你的 appsettings.json 配置将需要看起来像:
"test": "a,b,c"
或者
"test": "[a,b,c]"
您可以从中解决:
var test = AppSettings.GetList("test"); // or
var test = AppSettings.Get<List<string>>("test");