¿Por qué un <T> anulable no es un parámetro de atributo personalizado válido cuando T es?
Si tengo una enumeración como esta
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
y un atributo personalizado como este
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
puedo hacer esto
[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1
pero no puedo hacer esto
[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2
Genera un error que dice "'NullableHungerLevel' no es un argumento de atributo con nombre válido porque no es un tipo de parámetro de atributo válido".
¿Por qué no está permitido? Entiendo que, básicamente, simplemente no está en la lista de tipos aceptados. Los tipos válidos parecen ser primitivos, enumeraciones, cadenas, tipos y matrices unidimensionales de los tipos anteriores.
¿Es solo una regla antigua que no se actualizó cuando apareció Nullable?