Por que um Nullable <T> não é um Parâmetro de Atributo Customizado válido quando T é?
Se eu tenho um enum como este
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
e um atributo personalizado como este
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
eu posso fazer isso
[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1
mas eu não posso fazer isso
[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2
Ele gera um erro que diz "'NullableHungerLevel' não é um argumento de atributo nomeado válido porque não é um tipo de parâmetro de atributo válido".
Por que isso não é permitido? Eu entendo que fundamentalmente não está na lista de tipos aceitos. Os tipos válidos parecem ser primitivos, enums, string, tipo e arrays unidimensionais dos tipos anteriores.
Isso é apenas uma regra antiga que não foi atualizada quando o Nullable apareceu?