C # - это возможно?- [DescriptionAttribute ()] с текстом TextBox - PullRequest
0 голосов
/ 30 ноября 2011

Может ли DescriptionAttribute в перечислении содержать текст TextBox?Я спрашиваю, потому что у меня есть файл с многочисленными TextBox es, и я надеялся сопоставить их содержимое со значением, которое у меня есть.Я сомневаюсь, что смогу сделать это, но я совсем не уверен.

то есть

[DescriptionAttribute(textBox1.Text)]
a,

Ответы [ 3 ]

5 голосов
/ 30 ноября 2011

Нет, атрибуты нуждаются в постоянных времени компиляции в качестве параметров.

В спецификации C # написано:

Выражение E является выражением атрибут-аргумент, если все следующие утверждения верны:

  • Тип E является типом параметра атрибута (§24.1.3).
  • Во время компиляции значение E может быть разрешено одним из следующих:
    • постоянное значение.
    • typeof-выражение (§14.5.11), указывающее неуниверсальный тип, закрытый составной тип (§25.5.2) или несвязанный универсальный тип (§25.5).
    • Одномерный массив выражений атрибут-аргумент.
2 голосов
/ 30 ноября 2011

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

Вы не можете во время компиляции ссылаться на значение, которое будет существовать только во время выполнения.

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

1 голос
/ 30 ноября 2011

Нет. Атрибуты определяются во время компиляции и должны быть постоянными значениями.

...