Answers:
使用Enum
的静态方法GetNames
。它返回一个string[]
,如下所示:
Enum.GetNames(typeof(DataSourceTypes))
如果要创建仅对的一种类型执行此操作的方法,enum
并将该数组转换为List
,则可以编写如下代码:
public List<string> GetDataSourceTypes()
{
return Enum.GetNames(typeof(DataSourceTypes)).ToList();
}
您将需要Using System.Linq;
在类的顶部使用.ToList()
Enum.GetNames(typeof(DataSourceTypes))
返回泛型System.Array
而不是字符串数组?
public static string[] GetNames
我想添加另一个解决方案:就我而言,我需要在下拉按钮列表项中使用一个Enum组。因此它们可能有空间,即需要更多用户友好的描述:
public enum CancelReasonsEnum
{
[Description("In rush")]
InRush,
[Description("Need more coffee")]
NeedMoreCoffee,
[Description("Call me back in 5 minutes!")]
In5Minutes
}
在帮助程序类(HelperMethods)中,我创建了以下方法:
public static List<string> GetListOfDescription<T>() where T : struct
{
Type t = typeof(T);
return !t.IsEnum ? null : Enum.GetValues(t).Cast<Enum>().Select(x => x.GetDescription()).ToList();
}
呼叫此帮助程序时,您将获得项目描述列表。
List<string> items = HelperMethods.GetListOfDescription<CancelReasonEnum>();
补充:无论如何,如果要实现此方法,则需要:GetDescription扩展来枚举。这就是我用的。
public static string GetDescription(this Enum value)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name != null)
{
FieldInfo field = type.GetField(name);
if (field != null)
{
DescriptionAttribute attr =Attribute.GetCustomAttribute(field,typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attr != null)
{
return attr.Description;
}
}
}
return null;
/* how to use
MyEnum x = MyEnum.NeedMoreCoffee;
string description = x.GetDescription();
*/
}