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?