using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace System
{
public static class Enum2
{
///
/// 获取枚举定义的所有常量
///
///
///
public static TEnum[] GetAll() where TEnum : Enum => (TEnum[])Enum.GetValues(typeof(TEnum));
///
/// 将 Flags 枚举进行拆分
///
///
///
///
public static IEnumerable FlagsSplit(TEnum resultant) where TEnum : Enum
=> GetAll().Where(x => resultant.HasFlag(x)).ToArray();
internal static TEnum ConvertToEnum(this TStruct value)
{
var parameter = Expression.Parameter(typeof(TStruct));
var dynamicMethod = Expression.Lambda>(
Expression.Convert(parameter, typeof(TEnum)),
parameter);
return dynamicMethod.Compile()(value);
}
public static int ConvertToInt32(TEnum value) where TEnum : Enum => ConvertToEnum(value);
}
}