带有变量Dynamic DisplayName的DisplayAttribute名称

Ing*_*als 7 c# string-formatting data-annotations displayattribute

想知道这是否可能或具有这种效果的东西.

public class MyModel
{
    public string Name { get; set; }

    [Display(Name = String.Format("This is [0]'s phone number", Name)]
    public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在谈论一个带有变量的DisplayName,非静态的,可能还基于模型的其他属性.这有可能吗?

Gra*_*mas 4

这是不可能的,因为为属性参数指定的参数必须是常量值(本能地,因为没有与其他任何内容相关的上下文,并且不一定能够在编译时解析(这是一个要求))。来自 C# 规范 (3.0) \xc2\xa717.2:

\n\n

如果以下所有陈述都为真,则表达式E属性参数表达式:

\n\n
    \n
  • 的类型E是属性参数类型(\xc2\xa717.1.3)。
  • \n
  • 在编译时, 的值E可以解析为以下之一:\n
      \n
    • 一个常数值。
    • \n
    • 一个 System.Type 对象。
    • \n
    • 属性参数表达式的一维数组
    • \n
  • \n
\n