В настоящее время я использую NewtonSoft.Json
для преобразования между JSON и Config
моделью.Я хотел бы иметь возможность принимать макросы переменных среды в JSON, например, так:
{
...,
"myStringVar": "${MY_STRING}",
"myArrayVar": ${MY_ARRAY},
...
}
В настоящее время я делаю это путем интерполяции необработанного JSON с переменными среды и последующей десериализации, например:
var interpolatedConfigText = configText.InterpolateWithEnvironmentVariables();
var config = JsonConvert.DeserializeObject<Config>(interpolatedConfigText, new StringEnumConverter());
Это работает достаточно хорошо, но очевидным недостатком является то, что когда я иду, чтобы сохранить этот файл, у меня нет записей о том, что некоторые параметры были фактически получены из переменных среды, поэтому те, которые были перезаписаны:
{
...,
"myStringVar": "string value",
"myArrayVar": [ 0, 1 ],
...
}
Есть ли умный способ, которым я могу включить собственный сериализатор, чтобы выполнить это без необходимости, скажем, изменять типы всех моих членов на какое-то представление, которое имеет как возможно нулевое имя переменной среды,а его актуальная стоимость?Просто ищу правильное направление для достижения чего-то подобного.