Si tengo una enumeración como esto¿Por qué un Nullable <T> no es un parámetro de atributo personalizado válido cuando T es?
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
y un atributo personalizado como éste
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
que pueda 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, fundamentalmente, simplemente no está en la lista de tipos aceptados. Los tipos válidos parecen ser primitivas, enumeraciones, cadenas, tipos y matrices unidimensionales de los tipos anteriores.
¿Es esta una regla antigua que no se actualizó cuando apareció Nullable?
Mientras que originalmente encontré con esto en .NET 3.5 VS2008 todavía no funciona en VS2010 Beta1. –