Не могу сделать Generic Nullable Enum
Есть класс (код немного абстрактный, но абсолютно рабочий):
public class SomeClass<T> where T: System.Enum
{
public T? SomeProperty { get; } // ошибка
// ↑↑
}
Как видно, я хочу иметь Nullable Enum, тип которого передётся при создании экземляра класса.
Как я знаю, Enum сам по себе не может равняться null, почему тогда я не могу использовать Nullable<T> (T?)?
Ответы (1 шт):
На сколько я понимаю проблема твоего кода лежит в том, что System.Enum является классом, а использование нуллейбл типов требует от требя использования структур.
Сам энам возможно и не может иметь значение налл, но ты вполне можешь использовать конкретный энам как нуллейбл
public myEnum? instance = null;
если ты не переназначал тип, т.к. по дефолту это инт значения ( т.е. это структура)
В случае с генерик классом можно попробовать взять за основу код отсюда https://stackoverflow.com/a/50351847/4423545 и получить вот это:
//смотри наследование
public class SomeClass<T> where T: struct, System.Enum
{
public T? SomeProperty { get; }
}