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

时间:2016-11-14 21:59:36

标签: c# vb.net entity-framework data-annotations code-first

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

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

我的问题。 。

是否有可以声明的.net结构,被识别为常量表达式,然后在通常需要常量表达式的情况下可用?

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

1 个答案:

答案 0 :(得分:6)

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

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

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