Можливі дублікати:
Перерахування C # як параметри функції?
Мені було цікаво, як я можу передати тип переліку як аргумент методу.
Я намагаюся створити загальний метод, який буде приймати поле зі списком та перерахування та заповнювати поле зі списком кожним елементом переліку.
Відповіді:
8 для відповіді № 1Посилаючись на Перетворити Enum на словник:
public static IDictionary<String, Int32> ConvertEnumToDictionary<K>()
{
if (typeof(K).BaseType != typeof(Enum))
{
throw new InvalidCastException();
}
return Enum.GetValues(typeof(K)).Cast<Int32>().ToDictionary(currentItem => Enum.GetName(typeof(K), currentItem));
}
Потім ви можете заповнити ваш ComboBox повернутими елементами словника.
Зверніться також до наступного:
7 для відповіді № 2
Ви можете передати перерахування загальним чином:
private void Method(Enum tEnum)
{
Enum.GetValues(tEnum.GetType());
}
І GetValues надасть вам ті значення, які можливі для цього переліку.
Використання було б трохи дивним:
Method(EnumType.Value)
тому він може не відповідати іншим ідеям.
6 за відповідь № 3
Я думаю, це найкраще пояснити на прикладі:
Скажімо, у вас є перерахування:
enum MyEnum
{
One,
Two,
Three
}
Ви можете оголосити такий метод, як:
public static void MyEnumMethod(Enum e)
{
var enumValues = Enum.GetValues(e.GetType());
// you can iterate over enumValues with foreach
}
І ви б назвали це так:
MyEnumMethod(new MyEnum());
3 для відповіді № 4
За допомогою цього методу ви не можете додати будь-який тип перерахування, як це: AddItems(myCombobox, typeof(Options))
public void AddItems (ComboBox cboBox, Type enumType)
{
cboBox.Items.AddRange(Enum.GetValues (enumType).Cast<object> ().ToArray ());
}
enum Options
{
Left, Right, Center
}
1 для відповіді № 5
ви можете використати такий загальний помічник переліку, як тут: http://devlicious.com/blogs/christopher_bennage/archive/2007/09/13/my-new-little-friend-enum-lt-t-gt.aspx.
1 для відповіді № 6
Ви можете використовувати:
Enum.GetValues(typeof(MyEnumType))
і просто заповніть елементи комбінованого вікна з цього
Змінити: і, звичайно, використовувати відображення, щоб отримати тип перерахування :)