【发布时间】:2010-09-22 18:37:13
【问题描述】:
我的 enumHelper 类包含这些:
public static IList<T> GetValues()
{
IList<T> list = new List<T>();
foreach (object value in Enum.GetValues(typeof(T)))
{
list.Add((T)value);
}
return list;
}
和
public static string Description(Enum value)
{
Attribute DescAttribute = LMIGHelper.GetAttribute(value, typeof(DescriptionAttribute));
if (DescAttribute == null)
return value.ToString();
else
return ((DescriptionAttribute)DescAttribute).Description;
}
我的枚举类似于:
public enum OutputType
{
File,
[Description("Data Table")]
DataTable
}
到目前为止一切顺利。以前的所有工作都很好。 现在我想添加一个新的助手来返回 BindingList>,所以我可以使用
将任何枚举链接到任何组合BindingList<KeyValuePair<OutputType, string>> list = Enum<OutputType>.GetBindableList();
cbo.datasource=list;
cbo.DisplayMember="Value";
cbo.ValueMember="Key";
为此我补充说:
public static BindingList<KeyValuePair<T, string>> GetBindingList()
{
BindingList<KeyValuePair<T, string>> list = new BindingList<KeyValuePair<T, string>>();
foreach (T value in Enum<T>.GetValues())
{
string Desc = Enum<T>.Description(value);
list.Add(new KeyValuePair<T, string>(value, Desc));
}
return list;
}
但是“Enum.Description(value)”甚至没有编译: 参数“1”:无法从“T”转换为“System.Enum”
我该怎么做?这可能吗?
谢谢。
【问题讨论】:
-
您的 Description 方法是否应该是扩展方法?如果是这样,您错过了 this 关键字。
-
查看我对这个问题的回答stackoverflow.com/questions/6145888/…
标签: c# enums generics bindinglist