Использование переменных в атрибутах в С#
У нас есть код с хорошим атрибутом 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; }
Кажется, что все работает нормально, за исключением того, что наличие константной строки означает, что мы не можем перезаписать ее в каких-либо базовых классах, тем самым удалив функциональность, которую мы изначально собирались добавить, и разоблачая мой вопрос:
Есть ли способ использовать какую-то переменную внутри атрибута, чтобы мы могли наследовать и сохранять атрибуты?
Ответы
Ответ 1
Все внутри атрибута должно быть известно компилятору во время компиляции. Переменные по своей сути являются переменными (!), Поэтому их нельзя использовать в атрибутах.
Если вы можете использовать инструмент генерации кода, вы сможете динамически вводить разные (постоянные) значения в каждый производный класс.
Ответ 2
Вы можете перепрыгнуть через обручи и использовать дополнительный атрибут для определения переменной, но это будет довольно немного работы по сравнению с тем, что она будет производить. Нет простого способа выполнить то, что вам нужно.