我想知道如何将枚举类型作为方法参数传递。
我正在尝试创建一个通用方法,该方法将采用组合框,枚举,并使用枚举的每个项填充组合框。
答案 0 :(得分:9)
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。
请参阅以下内容:
答案 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)
你可以使用一种通用的枚举助手:http://devlicious.com/blogs/christopher_bennage/archive/2007/09/13/my-new-little-friend-enum-lt-t-gt.aspx。
答案 5 :(得分:1)
您可以使用:
Enum.GetValues(typeof(MyEnumType))
然后只填充
中的组合框项目编辑:当然使用反射来获取枚举类型:)