小编spr*_*tus的帖子

使用泛型方法获取我的枚举属性的List <string>

一开始,我们有这个基本的枚举.

public enum E_Levels {

    [ValueOfEnum("Low level")]
    LOW,

    [ValueOfEnum("Normal level")]
    NORMAL,

    [ValueOfEnum("High level")]
    HIGH
}
Run Code Online (Sandbox Code Playgroud)

而且我想得到List<string> 任何一个枚举.这样的东西Extensions.GetValuesOfEnum<E_Levels>()可以返回List<string>"低级别","正常级别"和"高级别".

StackOF帮助我获得了一个值属性:

public static class Extensions {

    public static string ToValueOfEnum(this Enum value) {

        FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
        ValueOfEnum[] attribs = fieldInfo.GetCustomAttributes(typeof(ValueOfEnum), false) as ValueOfEnum[];
        return attribs.Length > 0 ? attribs[0].value : null;
    }
}
Run Code Online (Sandbox Code Playgroud)

无论枚举如何,我都可以调用这种方法:E_Levels.LOW.ToValueOfEnum().

此外,StackOF帮助我获得了List<string>一个特定的枚举.我在控制器中制作了这个方法:

private List<string> GetLevels() {

List<string> levelsToReturn = new List<string>();
var levels = Enum.GetValues(typeof(E_Levels)).Cast<E_Levels>(); …
Run Code Online (Sandbox Code Playgroud)

c# generics enums custom-attributes

5
推荐指数
1
解决办法
5648
查看次数

标签 统计

c# ×1

custom-attributes ×1

enums ×1

generics ×1