Podążałem za niektórymi examples for ASP.NET 5 i natknąłem się, jak poprawnie odczytać "zagnieżdżone" wartości konfiguracyjne (jeśli jest to właściwe określenie).Jak poprawnie odczytać zagnieżdżone wartości konfiguracyjne z pliku config.json w ASP.NET5?
Oto odnośny fragment config.json
:
{
"ApplicationName" : "OwNextApp",
"AppSettings": {
"SiteTitle": "OwNext"
},
}
i istotne części HomeController.cs
:
public IActionResult About()
{
var appNestedNameFailed = _config.Get("AppSettings.SiteTitle");
var appNestedNameSuccess = _config.Get("AppSettings:SiteTitle");
var appName = _config.Get("ApplicationName");
ViewBag.Message = string.Format(@"Your
APP NAME: {0};
APP NESTED NAME FAILED: {1};
APP NESTED NAME SUCCESS: {2}",
appName, appNestedNameFailed, appNestedNameSuccess);
return View();
}
Wart appNestedNameFailed
jest pusta (moja pierwsza próba przed badaniami). I appNestedNameSuccess
ma wartość; po Zrobiłem badania i stwierdzono w badaniach na Configuration (pokazany odpowiedni kod):
// Assert
Assert.Equal("IniValue1", config.Get("IniKey1"));
Assert.Equal("IniValue2", config.Get("IniKey2:IniKey3"));
Czy ktoś może wyjaśnić, dlaczego tak się dzieje? Dlaczego miałoby sens używanie :
przez .
? Z moich interakcji z danymi JSON zwykle zapisy .
działają dobrze, np. How to access nested json data.
Również znalazłem podobny SO question, ale to nie daje wyjaśnienia, dlaczego został wybrany :
.
Tak jak podejrzewano, był to tylko naturalny ogranicznik. Dzięki za potwierdzenie :) –
Dzięki wszystkim. Lubię mocno wpisywać, więc używam 'ConfigurationBinder'. – CrnaStena
fyi, linki są martwe – RSid