Может ли Enums унаследовать от Nullable примитивных типов? - PullRequest
0 голосов
/ 16 марта 2020

Я смотрю на спецификацию XML, которая гласит, что перечисление должно быть закодировано как обнуляемое uInt8.

<enum name="FTI" encodingType="uInt8NULL">
    <validValue description="Backup" name="Backup">0</validValue>
    <validValue description="Primary" name="Primary">1</validValue>

Следовательно, я создаю перечисление только для того, чтобы выяснить, что он не может наследоваться от обнуляемого примитивного типа.

Есть ли способ обойти это, или это по замыслу?

public enum KeepAlivedLapsed : Byte?
{
    NotLapsed = 0,
    Lapsed = 1,
}

Ошибка: CS1008 Тип byte, sbyte, short, ushort , int, uint, long или ulong ожидаемые

Та же ошибка возникает, когда я наследую от Nullable<Byte>.

1 Ответ

2 голосов
/ 16 марта 2020

Что вам нужно сделать, это создать нормальный enum, а затем использовать его как обнуляемый тип:

public enum KeepAlivedLapsed : Byte
{
    NotLapsed = 0,
    Lapsed = 1,
}

KeepAlivedLapsed? value = null;
...