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

У нас есть некоторый Хорошо приписанный код DB, как так:

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

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

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

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

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

24
задан thepaulpage 13 May 2010 в 14:58
поделиться

2 ответа

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

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

20
ответ дан 29 November 2019 в 00:15
поделиться

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

4
ответ дан 29 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: