Информация об изменениях

Сообщение Re: Конвертация enum в int в generic методах от 25.04.2022 8:20

Изменено 25.04.2022 14:04 AndrewVK

Re: Конвертация enum в int в generic методах
Обход религиозных запретов с помощью черной магии
public static class HackEnumConvert<TEnumType> where TEnumType : struct, Enum
{
private static readonly Func<TEnumType, int> Wrapper;
public static int ToInt(TEnumType enu) {
return Wrapper(enu);
}
static HackEnumConvert() {
var p = Expression.Parameter(typeof(TEnumType), null);
var c = Expression.ConvertChecked(p, typeof(int));
Wrapper = Expression.Lambda<Func<TEnumType, int>>(c, p).Compile();
}
}

HackEnumConvert<EMyEnum>.ToInt(value);
Re: Конвертация enum в int в generic методах
Обход религиозных запретов с помощью черной магии
public static class HackEnumConvert<TEnumType> where TEnumType : struct, Enum
    {
        private static readonly Func<TEnumType, int> Wrapper;
        public static int ToInt(TEnumType enu) {
            return Wrapper(enu);
        }
        static HackEnumConvert() {
            var p = Expression.Parameter(typeof(TEnumType), null);
            var c = Expression.ConvertChecked(p, typeof(int));
            Wrapper = Expression.Lambda<Func<TEnumType, int>>(c, p).Compile();
        }
    }

HackEnumConvert<EMyEnum>.ToInt(value);