Для настроек среды мы храним JSON BLOB-объектов в нашей БД, таких как:
[
{
"env": "local",
"keya": "valueA_local"
"keyb": "valueB_local"
},
{
"env": "development",
"keya": "valueA_dev"
"keyb": "valueB_dev"
},
{
"env": "qa",
"keya": "valueA_qa"
"keyb": "valueB_qa"
}
]
И у нас есть перечисление:
public enum EnvironmentSettings
{
KeyA = 1,
KeyB = 2,
}
И у нас есть класс :
[Serializable]
public class MyProjectEnvironmentSettings
{
[JsonProperty("env")]
public string Environment { get; set; }
[JsonProperty("keya")]
public string KeyA{ get; set; }
[JsonProperty("keyb")]
public string KeyB{ get; set; }
}
И, наконец, мне нужно создать метод, который возвращает значение для данной пары. Мне бы хотелось, чтобы этот метод не нужно было изменять, если добавлен новый параметр.
public string GetEnvironmentSetting(EnvironmentSettings environmentSetting)
{
List<MyProjectEnvironmentSettings> environmentSettings = // get the entire list from the DB
string envName = // get environment
string keyToGet = environmentSetting.ToString().ToLower();
// This will get the group of settings specific to the environment
var envSettings = environmentSettings.Where(e => e.Environment.ToLower() == envName).FirstOrDefault();
// And last, I need to get the value for the specific setting that is being requested
string settingValue = envSettings.Where(e => e.???? == keyToGet ); // <---------- This is where I need help!
}
Я не уверен, как выполнить запрос по атрибуту JsonProperty
.
Спасибо!