На самом деле, при построении конфигурации там нет массивов.Это просто словарь пары ключ-значение.Таким образом, вы получаете строковые ключи, что-то вроде "mysectionouter:mysectioninner:0:foo" = 1
.
Так что, когда в вашей конфигурации вы определяете массив, происходит следующее:
appsettings.json:
"mysectionouter:mysectioninner:0:foo" = 1
"mysectionouter:mysectioninner:0:bar" = 2
appsettings.production.json:
"mysectionouter:mysectioninner:0:bar" = new1
результат:
foo = 1
bar = new1
Так что это просто на основе индекса, а следующая конфигурация просто переопределяет ключ.Во втором примере вы ничего не добьетесь, кроме изменения индекса.Представление будет следующим:
"mysectionouter:mysectioninner:1:bar" = new1
Итак, вернемся к вашему вопросу: массивы сложны в настройках приложений, и хотя они поддерживаются, как правило, сложны и не интуитивно понятны в использовании.
По индексу вы можете получить странное слияние двух не связанных объектов, если вы определите разные наборы настроек в ваших файлах, например, настройки A и B в первой конфигурации и C во второй, вы получите Cи B в результате, и вы, вероятно, не хотите иметь B вообще.Хуже того, вы можете получить сочетание A и C, если определите только некоторые поля каждого объекта.
Я бы порекомендовал использовать некоторые другие файлы для хранения такого рода информации.Вы также можете открыть отладчик только там, где загружена конфигурация, и посмотреть, как эти ключи создаются, чтобы получить больше информации.