为什么Validation属性接受构造函数参数不接受变量

时间:2015-02-19 23:01:41

标签: c# validation

我试图编写以下代码 -

[Range(DateTime.UtcNow.Add(-7).Ticks, DateTime.UtcNow.Add(7).Ticks)]
public DateTime TimeStamp;

编译器报告错误 - 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。

错误是自描述的,没关系。我的问题是 - 不允许表达式/变量/方法调用作为C#中任何属性的参数的理由是什么?

1 个答案:

答案 0 :(得分:2)

因为属性存储为元数据,所以它们的值应该在编译时知道,因此它们可以在编译代码后存储,并且不会在运行时更改。