【问题标题】:Using variables within Attributes in C#在 C# 的属性中使用变量
【发布时间】:2010-05-13 14:58:46
【问题描述】:

我们有一些属性良好的数据库代码,如下所示:

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

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

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

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

有没有办法在属性内部使用某种变量,以便我们可以继承和保留属性装饰?

【问题讨论】:

    标签: c# variables attributes


    【解决方案1】:

    编译器必须在编译时知道属性中的所有内容。变量本质上是变量 (!),因此不能在属性中使用。

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

    【讨论】:

    • 这太糟糕了,但我是这么想的。谢谢。
    • 这实在是太糟糕了。但是,应该有这样的用例,有没有好的替代方案?
    • 这是否也证明了为什么我们不能使用static readonly String 作为属性参数?编辑:没关系,我们可以使用const String
    • 我们可以使用appsettings.json中定义的东西吗?
    【解决方案2】:

    您可以跳过箍并使用附加属性来定义变量部分,但与它所产生的相比,这将是相当多的工作。没有简单的方法可以完成您所追求的。

    【讨论】:

    • 我简要地考虑了我自己的属性,但我认为额外的工作并不能证明保存的工作是合理的。这对我来说是一个简单的问题,但不是在必须编译的时候。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多