/ / Передача типу переліку як аргумент? [дублікат] - c #, winforms, enums

Передавання типу Enum як аргумент? [дублікат] - c #, winforms, enums

Можливі дублікати:
Перерахування 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 повернутими елементами словника.

Зверніться також до наступного:

Перелік словників у C #

Перелік до словника


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))

і просто заповніть елементи комбінованого вікна з цього

Змінити: і, звичайно, використовувати відображення, щоб отримати тип перерахування :)