开发者

Using variables within Attributes in C#

We have some Well-Attributed DB code, 开发者_Go百科like so:

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

Since it is quite generic we'd like to use it again, but with a different string in the Name part of the attribute. Since it's an attribute it seems to want things to be const, so we tried:

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

This seems to work alright, except that having a const string means we can't overwrite it in any base classes, thereby removing the functionality that we originally were intending to add, and exposing my question:

Is there a way to use some sort of variable inside of an attribute so that we can inherit and keep the attribute decorations?


Everything inside an attribute must be known to the compiler at compile-time. Variables are inherently variable (!) so can't be used in attributes.

If you can use a code generation tool, you'd be able to dynamically inject different (constant) values into each derived class.


You could jump through hoops and use an additional attribute to define the variable portion, but that would be quite a bit of work compared to what it would produce. There's no simple way to accomplish what you're after.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜