Несколько файлов конфигурации с одинаковыми значениями - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть несколько файлов конфигурации, которые мне нужно прочитать (все в формате JSON). Содержимое файла структурно идентично. например,

alice.json

{ "Name": "Alice" }

bob.json

{ "Name": "Bob" }

Как мне загрузить их все в IConfiguration, чтобы они не перезаписывали друг друга? Могу ли я сказать фреймворку поместить их в разделы, соответствующие их именам файлов?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

То, что вы хотите, не возможно. Конфигурация загружается последовательно, в порядке регистрации поставщиков конфигурации, и каждый последующий источник переопределяет любой предыдущий источник. Единственный способ достичь чего-то похожего на то, что вы хотите, - это на самом деле настроить это в вашем JSON, т.е.

alice.json

{
  "alice.json": {
    "Name": "Alice"
  }
}

bob.json

{
  "bob.json": {
    "Name": "Bob"
  }
}
1 голос
/ 16 апреля 2019

Не думаю, что это лучше всего подходит для IConfiguration. Конфигурация специально разработана для наложения различных источников конфигурации, где ключи перезаписывают другие ключи - это специально.

Возможно, вы захотите выйти из конфигурации, обработать их напрямую с помощью сериализатора JSON и объединить объекты результата.

public class Person
{
  public string Name { get; set; }
}

public class People
{
  public string[] Names { get; set; }
}

public static People LoadPeople(string[] personJson)
  => new People
  {
    Names = JsonConvert.Deserialize<Person>(personJson).Select(p => p.Name).ToArray()
  };
...