我想知道如何可以传递一个枚举类型作为方法的参数。
我试图创建一个通用的方法,将需要一个组合框,并枚举,并填写与枚举的每个项目的组合框。
我想知道如何可以传递一个枚举类型作为方法的参数。
我试图创建一个通用的方法,将需要一个组合框,并枚举,并填写与枚举的每个项目的组合框。
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));
}
然后你就可以使用返回的字典项填写您的组合框。
请参考下面的还有:
+1我喜欢这样! – Dummy01
你也许可以使用像这样的一种泛型枚举助手:http://devlicious.com/blogs/christopher_bennage/archive/2007/09/13/my-new-little-friend-enum-lt-t-gt.aspx。
我即将发布的内容与该链接末尾的内容完全相同。 – Rangoric
您可以使用:
Enum.GetValues(typeof(MyEnumType))
,只是填充从
编辑组合框项目:当然使用refl挠度得到枚举类型:)
可以通过一般的枚举是这样的:
private void Method(Enum tEnum)
{
Enum.GetValues(tEnum.GetType());
}
而且的GetValues会给你是有可能的是枚举值。
的使用将是一个有点奇怪:
Method(EnumType.Value)
所以它可能不适合以及其他想法。
使用这种方法,你卡恩添加任何枚举类型这样的: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
}
我觉得这是最好的例子来说明:
假设你有一个枚举:
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());
有什么问题您有? – Bueller