代码之家  ›  专栏  ›  技术社区  ›  thepaulpage

在C中使用属性中的变量#

  •  21
  • thepaulpage  · 技术社区  · 15 年前

    我们有一些属性良好的DB代码,比如:

    [Display(Name = "Phone Number")]
    public string Phone { get; set; }
    

    由于它是非常通用的,我们希望再次使用它,但是在属性的名称部分使用不同的字符串。因为这是一个属性,所以我们尝试了:

    const string AddressType = "Student ";
    [Display(Name = AddressType + "Phone Number")]
    public string Phone { get; set; }
    

    这似乎没问题,除了有一个常量字符串意味着我们不能在任何基类中覆盖它,从而删除了我们原本打算添加的功能,并暴露了我的问题:

    有没有一种方法可以在属性内部使用某种类型的变量,以便我们继承和保留属性修饰?

    2 回复  |  直到 15 年前
        1
  •  19
  •   Daniel Renshaw    15 年前

    在编译时,编译器必须知道属性中的所有内容。变量本身就是变量!!)所以不能用在属性中。

    如果您可以使用代码生成工具,那么您就能够动态地将不同的(常量)值注入到每个派生类中。

        2
  •  3
  •   Adam Robinson    15 年前

    您可以跳过圈并使用一个额外的属性来定义变量部分,但是与它将产生的结果相比,这将是一项相当大的工作。没有简单的方法来完成你想要的。