任何回答此问题的人都知道,属性参数需要常量表达式。可选参数(对于任何事物,而不仅仅是属性)也需要常量表达式作为其默认值。
我遇到的(尽管很轻微)不方便的是RegularExpressionAttribute
的模式参数。我的数据模型中有许多使用此属性的属性(在System.ComponentModel.DataAnnotations中找到),每当我对验证模式进行更改时,我都必须返回并进行更改 everryyywherrreee 。 。 。它真的很烦人。
是否有可以声明的.net结构,被识别为常量表达式,然后在通常需要常量表达式的情况下可用?
如果我可以在某个地方声明RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$"
属性,然后根据需要更改该值,那就太棒了。
答案 0 :(得分:6)
可以在属性中使用任何可以定义为const
的内容。因此,您仍然受限于编译时常量,但您不必直接使用字符串或数值。
public const string RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$";
[RegularExpression(RegexPatternForNameProperty)]
public string Name {get; set;}