Почему 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?