我可以为属性参数创建一个常量表达式吗?

4

正如任何已经回答的人所知道的那样,属性的参数需要常量表达式。对于任何可选参数(不仅限于属性),其默认值也需要常量表达式。

我遇到的(虽然很小的)不便之处在于 RegularExpressionAttribute 的 pattern 参数。我的数据模型中有数十个使用此属性(在 System.ComponentModel.DataAnnotations 中找到)的属性,每当我更改验证模式时,我都必须返回并进行更改,这真的非常烦人。

我的问题是...

是否有一种 .net 结构可以声明、识别为常量表达式,并在通常需要常量表达式的地方可用?

如果我能在某个地方声明一个 RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$" 属性,然后根据需要只更改该值,那就太好了。


我认为应用密钥不被视为常量表达式。 - Ross Brasseaux
你是正确的!我道歉,误解了问题。为了避免误导,我将删除我的评论。 - Tyler Roper
1个回答

13

任何可以定义为const的东西都可以在属性中使用。因此,您仍然受限于编译时常量,但不必直接使用字符串或数字值。

public const string RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$";

[RegularExpression(RegexPatternForNameProperty)]
public string Name {get; set;}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接