Tag: 属性可以为

当T为什么时,为什么Nullable 不是有效的自定义属性参数?

如果我有这样的枚举 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出现时,这只是一个没有更新的旧规则吗?