c#将枚举和描述转成数组
时间: 2024-02-03 16:15:56 浏览: 94
细说C#中的枚举:转换、标志和属性
可以使用以下代码将C#中的枚举和它们的描述转换为一个数组:
```csharp
public static class EnumHelper
{
public static T[] GetValues<T>()
{
return (T[])Enum.GetValues(typeof(T));
}
public static string[] GetDescriptions<T>()
{
return GetValues<T>()
.Select(e => e.GetDescription())
.ToArray();
}
}
public static class EnumExtensions
{
public static string GetDescription(this Enum value)
{
var field = value.GetType().GetField(value.ToString());
var attribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
return attribute != null && attribute.Length > 0 ? attribute[0].Description : value.ToString();
}
}
```
其中,`EnumHelper`类包含了两个静态方法:`GetValues`和`GetDescriptions`。`GetValues`方法用于获取枚举的所有值,`GetDescriptions`方法则用于获取枚举的所有描述。
`EnumExtensions`类则扩展了`Enum`类型,实现了获取枚举描述的方法。需要注意的是,这里使用了`DescriptionAttribute`来标记枚举的描述。如果没有使用该特性,则会返回枚举的名称。(如果你没有为枚举添加描述,可以直接返回枚举的名称)
使用示例:
```csharp
public enum MyEnum
{
[Description("描述 1")]
Value1,
[Description("描述 2")]
Value2,
Value3
}
var values = EnumHelper.GetValues<MyEnum>();
var descriptions = EnumHelper.GetDescriptions<MyEnum>();
```
阅读全文