获取枚举值(从.dll)到列表

时间:2012-05-15 16:25:57

标签: c# .net

我使用数据库中的数据动态创建了一些enums作为.dll

我正在寻找将enum的值设为list的方法。

当我将每个.dll的引用添加到项目

时,我可以单独访问每个值
eg. MyEnum.value1

我尝试使用Type.GetMembers获取值,但没有运气。

有什么方法可以将enum中的所有值都放到列表中吗?

更新

我也尝试了Enum.GetValues(),但它出现了错误

'EnumeratedTypes.MyEnum'是'type',但用作'变量'

由于

3 个答案:

答案 0 :(得分:5)

使用Enum.GetValues(typeof(EnumeratedTypes.MyEnum))

答案 1 :(得分:1)

public enum Tree
{
    Trunk
};

Tree.Trunk.EnumToList();

使用此扩展程序:

public static List<T> EnumToList<T>(this T source)
{
    Type enumType = typeof(T);

    // Can't use type constraints on value types, so have to do check like this
    if (enumType.BaseType != typeof(Enum))
        throw new ArgumentException("T must be of type System.Enum");

    return new List<T>(Enum.GetValues(enumType) as IEnumerable<T>);
}

答案 2 :(得分:0)

转换为int和sum,如:

public enum myNums
{
    Alpha = 1,
    Beta = 10,
    Gamma = 100
}

void Main()
{

    var value  = System.Enum.GetValues( typeof( myNums ) )
                           .OfType<myNums>()
                           .Sum (n => (int)n);

    Console.WriteLine ( value ); // 111

}

// Define other methods and classes here