Во-первых, прошу прощения, если это дублированный вопрос. Я искал слишком долго, но безрезультатно.Укажите тип перечисления со строковым параметром
Предположит, у меня есть два перечислений:
public enum Dogs
{
Mastiff,
Bulldog
}
public enum Cats
{
Manx,
Tiger
}
На основании выбора пользователя «Кошки» или «Собак» от выпадающего, я хочу, чтобы заполнить еще один ComboBox с соответствующими значениями Enum. Это может быть сделано с помощью метода так:
void PopulateComboBox<EnumType>(RadComboBox box, Enum displayUnits)
{
// values and text derived from enumExtension methods
foreach (Enum unit in Enum.GetValues(typeof(EnumType)))
{
var item = new RadComboBoxItem(unit.GetName(), unit.ToString());
item.ToolTip = unit.GetDescription();
if (displayUnits != null && unit.ToString() == displayUnits.ToString())
item.Selected = true;
box.Items.Add(item);
}
}
Как получить правильный EnumType из указанного пользователя строки, так что я мог бы назвать это вроде как такие (бонусные очки, если я могу указать параметр «displayUnits» для принудительного выбора):
string choice = myComboBox.SelectedValue;
?? choiceAsAnEnumType = choice variable converted in some way ??
PopulateComboBox<choiceAsAnEnumType>(outputComboBox, null);
Эта реализация будет полезна, поскольку в моем текущем проекте у меня большое количество Enums. В настоящее время мне нужно сделать switch (choice)
и передать соответствующий тип Enum в различных случаях.
Любые вариации метода приемлемы, поскольку я никоим образом не заперт в этой стратегии (вне времени, чтобы реализовать любые другие).
Редактировать: Чтобы объяснить предложение TryParse/Parse, мне не интересно получать значение перечисления (мастиф или бульдог) из строки; скорее, я хочу, чтобы определенный оттенок Enum (Собаки или Кошки) из строки. TryParse требует поставляемый T, где я не знаю T в моем случае. Извиняюсь, если я неправильно понял методы, представленные в качестве примеров для TryParse, я относительно новичок в C# и ASP в целом.
использования 'Enum.TryParse' https://msdn.microsoft.com/en-us/library/dd783499%28v=vs.110%29.aspx – chomba
Возможный дубликат строки [parse string to enum type] (http: // stackoverflow. com/questions/1424971/parse-string-to-enum-type) – paqogomez
Почему бы не добавить перечисление непосредственно в поле со списком (вместо вызова 'unit.GetName'), то вы можете получить к нему доступ через свойство' SelectedItem', а не свойство 'SelectedValue'? – christophano