Dlaczego wartość Nullable <T> nie jest prawidłowym niestandardowym parametrem atrybutu, gdy T jest?

Jeśli mam takie wyliczenie

public enum Hungry
{
    Somewhat,
    Very,
    CouldEatMySocks
}

i taki atrybut niestandardowy

public class HungerAttribute : Attribute
{
    public Hungry HungerLevel { get; set; }
    public Hungry? NullableHungerLevel { get; set; }
}

mogę to zrobić

[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1

ale nie mogę tego zrobić

[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2

Generuje błąd, który mówi, że „NullableHungerLevel” nie jest prawidłowym nazwanym argumentem atrybutu, ponieważ nie jest prawidłowym typem parametru atrybutu ”.

Dlaczego to nie jest dozwolone? Rozumiem, że zasadniczo nie ma go na liście akceptowanych typów. Prawidłowe typy wydają się być prymitywnymi, wyliczeniami, ciągami, typami i jednowymiarowymi tablicami poprzednich typów.

Czy to tylko stara zasada, która nie została zaktualizowana, gdy pojawiła się Nullable?

questionAnswers(4)

yourAnswerToTheQuestion