Подтвердить что ты не робот

Использование переменных в атрибутах в С#

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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