Использование переменных в атрибутах в C # - PullRequest
23 голосов
/ 13 мая 2010

У нас есть некоторый код БД с хорошими атрибутами, например:

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

Так как он довольно общий, мы хотели бы использовать его снова, но с другой строкой в ​​части имени атрибута. Поскольку это атрибут, кажется, что все должно быть постоянным, поэтому мы попробовали:

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

Кажется, это работает нормально, за исключением того, что наличие строки const означает, что мы не можем перезаписать ее в каких-либо базовых классах, тем самым удаляя функциональность, которую мы изначально собирались добавить, и выставляя мой вопрос:

Есть ли способ использовать некоторую переменную внутри атрибута, чтобы мы могли наследовать и сохранять украшения атрибута?

Ответы [ 2 ]

20 голосов
/ 13 мая 2010

Все внутри атрибута должно быть известно компилятору во время компиляции. Переменные по своей природе являются переменными (!), Поэтому их нельзя использовать в атрибутах.

Если вы сможете использовать инструмент генерации кода, вы сможете динамически вводить различные (постоянные) значения в каждый производный класс.

3 голосов
/ 13 мая 2010

Вы можете перепрыгивать через обручи и использовать дополнительный атрибут для определения переменной части, но это будет довольно трудоемко по сравнению с тем, что он произведет. Нет простого способа добиться того, чего вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...