Константа внутри файла не означает, что она также является константой в коде. Константа в коде всегда имеет ключевое слово const
. Это не одно и то же. Значения, настроенные в настройках файла, могут быть изменены во время выполнения вашего Приложение. Постоянные поля не могут быть изменены во время выполнения.
Решение для достижения того, что вам нужно сделать без набора if-else
или switch-case
, заключается в запуске вашего приложения для загрузки словаря, который будет содержать все ключи (например, начиная с accesstoken:*
)
public static Lazy<IDictionary<string, string>> AppSettingsAccessTokens = new Lazy<IDictionary<string, string>>(() =>
{
return ConfigurationManager.AppSettings.AllKeys.Where(p => p.StartsWith("accesstoken:")).ToDictionary(p => p, p => ConfigurationManager.AppSettings[p]);
});
И, наконец, в вашем методе GetSomething
вам нравится:
public JsonResult GetSomething(string token = "")
{
var accessTokenSettingKey = AppSettingsAccessTokens.Value.Values.FirstOrDefault(p => p == token)?.Key;
// ....
}