Избегайте упаковки общего типа перечисления.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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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