Избегайте упаковки общего типа перечисления.C#

Место общения программистов C#
Anonymous
Избегайте упаковки общего типа перечисления.

Сообщение Anonymous »

Учитывая базовый класс:

Код: Выделить всё

public abstract class EnumType
where TEnum : struct, IConvertible
where TValue : struct
{
public abstract TEnum GetEnumValue(TValue value);
}
и производный класс:

Код: Выделить всё

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, который вводит (ненужную) упаковку.
Можно ли как-нибудь избежать этой упаковки?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -enum-type

Вернуться в «C#»