mirror of
https://github.com/BeyondDimension/SteamTools.git
synced 2026-10-21 17:13:09 +08:00
25 lines
877 B
C#
25 lines
877 B
C#
using System.Linq.Expressions;
|
|
|
|
namespace System
|
|
{
|
|
public static class Enum2
|
|
{
|
|
/// <summary>
|
|
/// 获取枚举定义的所有常量
|
|
/// </summary>
|
|
/// <typeparam name="TEnum"></typeparam>
|
|
/// <returns></returns>
|
|
public static TEnum[] GetAll<TEnum>() where TEnum : Enum => (TEnum[])Enum.GetValues(typeof(TEnum));
|
|
|
|
internal static TEnum ConvertToEnum<TEnum, TStruct>(this TStruct value)
|
|
{
|
|
var parameter = Expression.Parameter(typeof(TStruct));
|
|
var dynamicMethod = Expression.Lambda<Func<TStruct, TEnum>>(
|
|
Expression.Convert(parameter, typeof(TEnum)),
|
|
parameter);
|
|
return dynamicMethod.Compile()(value);
|
|
}
|
|
|
|
public static int ConvertToInt32<TEnum>(TEnum value) where TEnum : Enum => ConvertToEnum<int, TEnum>(value);
|
|
}
|
|
} |