通过枚举类型作为参数?

时间:2011-06-23 13:36:17

标签: c# winforms enums

  

可能重复:
  C# enums as function parameters?

我想知道如何将枚举类型作为方法参数传递。

我正在尝试创建一个通用方法,该方法将采用组合框,枚举,并使用枚举的每个项填充组合框。

6 个答案:

答案 0 :(得分:9)

参考Convert Enum To Dictionary

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。

请参阅以下内容:

Dictionary enumeration in C#

Enum to dictionary

答案 1 :(得分:8)

你可以像这样传递一个枚举:

private void Method(Enum tEnum)
{
    Enum.GetValues(tEnum.GetType());
}

GetValues将为您提供该枚举可能的值。

用法有点奇怪:

Method(EnumType.Value)

所以它可能不如其他想法那么合适。

答案 2 :(得分:6)

我认为最好用一个例子来解释:

说你有一个枚举:

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 :(得分:3)

使用此方法,您可以添加任何类型的枚举: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
  }

答案 4 :(得分:1)

答案 5 :(得分:1)

您可以使用:

Enum.GetValues(typeof(MyEnumType))

然后只填充

中的组合框项目

编辑:当然使用反射来获取枚举类型:)