我已经创建了一些enums动态.dll使用数据库中的数据。
我正在寻找一种方法来获取 a 的enum值list。
当我将每个值的引用添加.dll到项目时,我可以分别访问每个值
eg. MyEnum.value1
我尝试使用Type.GetMembers来获取值,但没有运气。
有什么办法可以将所有值放入enum列表中?
更新
我也尝试 Enum.GetValues() 但出现错误
“EnumeratedTypes.MyEnum”是一个“类型”,但用作“变量”
谢谢
我已经创建了一些enums动态.dll使用数据库中的数据。
我正在寻找一种方法来获取 a 的enum值list。
当我将每个值的引用添加.dll到项目时,我可以分别访问每个值
eg. MyEnum.value1
我尝试使用Type.GetMembers来获取值,但没有运气。
有什么办法可以将所有值放入enum列表中?
更新
我也尝试 Enum.GetValues() 但出现错误
“EnumeratedTypes.MyEnum”是一个“类型”,但用作“变量”
谢谢
采用Enum.GetValues(typeof(EnumeratedTypes.MyEnum))
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>);
}
转换为 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