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

Can I create a constant expression for use in attribute parameter?

回答这个问题的人都知道,属性的参数需要常量表达式。可选参数(对于任何东西,而不仅仅是属性)也需要常量表达式作为它们的默认值。

我遇到的(尽管是轻微的)不便与 RegularExpressionAttribute 的模式参数有关。我的数据模型中有许多使用此属性的属性(在 System.ComponentModel.DataAnnotations 中找到),每当我更改验证模式时,我都必须返回并进行更改 everryyywherrreee 。 . .真的很烦人。

我的问题。 . .

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

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

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

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

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