Фон
У меня есть несколько сценариев, которые выполняются как часть моего процесса сборки, которые просматривают различные файлы исходного кода и генерируют для меня еще немного исходного кода.
Скрипты используют CodeDom для их генерации и читают файлы .cs
с помощью простого текстового ридера.
Вопрос
Один из сценариев ищет использование определенного атрибута класса с именем PageMenuItem
, и его целью является создание статического списка пунктов меню страницы.
Он делает это прямо сейчас, читая все файлы .cs
и ищет атрибуты "PageMenuItem"
, затем подсчитывает количество аргументов и пытается выяснить, какой конструктор используется, чтобы разделить различные части информации.
Существует 7 конструкторов для PageMenuItem
с различными параметрами, поэтому очень трудно определить из исходного кода .cs
, какой конструктор используется и, следовательно, как анализировать информацию.
Вместо того, чтобы пытаться анализировать текст самостоятельно, я хотел бы просто создать объект PageMenuItem
в памяти и затем использовать его свойства.
Итак, мне нужен способ взять объявление атрибута из файла .cs
и создать из него новый экземпляр PageMenuItem
.
Возможно ли это?
Еще один способ задать этот вопрос:
Учитывая эту строку:
string myCodeStatement = "[MyAttribute(\"asdf\", \"foo\")]";
Как я могу создать объект типа MyAttribute
, чтобы я мог работать с этим объектом? У меня есть полный доступ к исходному коду, который определяет MyAttribute
.