我试图编写以下代码 -
[Range(DateTime.UtcNow.Add(-7).Ticks, DateTime.UtcNow.Add(7).Ticks)]
public DateTime TimeStamp;
编译器报告错误 - 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。
错误是自描述的,没关系。我的问题是 - 不允许表达式/变量/方法调用作为C#中任何属性的参数的理由是什么?
答案 0 :(得分:2)
因为属性存储为元数据,所以它们的值应该在编译时知道,因此它们可以在编译代码后存储,并且不会在运行时更改。