【发布时间】:2019-01-09 05:04:12
【问题描述】:
如果我有这样的枚举
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 中仍然无法使用。
标签: c# attributes nullable