В C#, как я могу создать IConfigurationRoot из существующей строки JSON таким образом, чтобы поддерживать метод перезагрузки?

#c# #json #configuration

Вопрос:

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

Моя проблема в том, что я использую JsonStreamConfigurationSource для чтения встроенный ресурс (что кажется наиболее естественным способом), но этот поток можно прочитать только один раз. Reload бросает это:

 System.InvalidOperationException StreamConfigurationProviders cannot be loaded more than once.  

Я полагаю, что одной из альтернатив было бы сохранить JSON в файл, а затем использовать JsonConfigurationProvider для чтения из этого файла. Это просто кажется действительно уродливым. Есть ли более приятный способ загрузить мой ресурс JSON более одного раза?