public sealed class ByteEnumType : EnumType
where T : struct, IConvertible
{
public override T GetEnumValue(byte value) => (T)Enum.ToObject(typeof(T), (int)value);
}
public sealed class CharEnumType : EnumType
where T : struct, IConvertible
{
public override T GetEnumValue(char value) => (T)Enum.ToObject(typeof(T), (int)value);
}
Реализация GetEnumValue использует Enum.ToObject, который вводит (ненужную) упаковку. Можно ли как-нибудь избежать этой упаковки?
Учитывая базовый класс: [code]public abstract class EnumType where TEnum : struct, IConvertible where TValue : struct { public abstract TEnum GetEnumValue(TValue value); } [/code] и производный класс: [code]public sealed class ByteEnumType : EnumType where T : struct, IConvertible { public override T GetEnumValue(byte value) => (T)Enum.ToObject(typeof(T), (int)value); } [/code] и/или [code]public sealed class CharEnumType : EnumType where T : struct, IConvertible { public override T GetEnumValue(char value) => (T)Enum.ToObject(typeof(T), (int)value); } [/code] Реализация GetEnumValue использует Enum.ToObject, который вводит (ненужную) упаковку. [b]Можно ли как-нибудь избежать этой упаковки?[/b]