Если у меня есть перечисление как этотПочему Nullable <T> не является допустимым параметром пользовательского атрибута, когда T является?
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
и пользовательский атрибут, как этот
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
Я могу это сделать
[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1
, но я не могу это сделать
[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2
Он генерирует ошибку, которая говорит: «NullableHungerLevel» не является допустимым аргументом атрибута имени, потому что он не является допустимым типом параметра атрибута ».
Почему это запрещено? Я понимаю, что в принципе это просто не входит в список принятых типов. Допустимыми типами являются примитивы, перечисления, строки, типы и одномерные массивы предыдущих типов.
Это просто старое правило, которое не обновилось, когда появился Nullable?
Хотя изначально я наткнулся на это в .NET 3.5 VS2008 это еще не работает в VS2010 Beta1. –