Я надеялся получить некоторую помощь в этом. Мне нужна функция, которая может принимать строку, которая является ключом для словаря, и тип перечисления, который должен быть отброшен.Enum Casting With a Variable
Клавиша словаря будет числом, которое соответствует перечислению. Мне нужно знать, как передать int в перечисление, где перечисление переменной.
Это функция, поскольку у меня она написана. Это может быть более ясно, чем мое объяснение.
string GetEnum(string keyName, Enum enumType)
{
var defaultOut = "";
Model.Form.TryGetValue(keyName, out defaultOut);
if(defaultOut != ""){
return EnumDescriptionUtility.GetDescription((enumType)Convert.ToInt32(defaultOut));
}
else{
return defaultOut;
}
}
Я использовал большую часть этого кода раньше. ранее была разница в том, что enumType был жестко закодирован для фактического перечисления. Я хочу разгрузить все это повторение функции.
Любая помощь приветствуется.
Здесь есть много потенциальных проблем. Вы подтверждаете какое-либо из ваших преобразований? Кроме того, зачем преобразовать строку в int, а затем в enum ... почему бы просто не преобразовать из строки в enum? Или еще лучше, почему бы просто не полностью опустить строку и работать с перечислениями (т. Е. Как выход в «TryGetValue»)? –
Я могу добавить чек для плохого преобразования. Строка выводится из базы данных. Поэтому мне нужно преобразовать его в перечисление, чтобы получить описание перечисления, которое представляет собой пользователь, стоящий перед хорошей версией. – HarvP
Мне просто интересно, почему, если ваш 'defaultOut' всегда будет передан' Convert.ToInt32', почему это строка? Почему не просто int? Или, как я уже сказал, почему бы не сделать переписью? –