В надстройке VS2010 на C #, как вы получаете имя и сигнатуру метода, в котором в данный момент находится ваш курсор?

#c# #visual-studio-2010 #add-in #vs-extensibility

#c# #visual-studio-2010 #надстройка #vs-расширяемость

Вопрос:

В надстройке VS2010 на C #, как вы получаете имя и сигнатуру метода, в котором в данный момент находится ваш курсор?

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

Пример:

Перед:

 public void TheMethod(string text)
{
...

return text;
}
  

После:

 public void TheMethod(string text)
{
log.Trace("public void TheMethod( string text ="   text   " ) - in");

...

log.Trace("public void TheMethod( ... ) - out with text = "   text );

return text;
}
  

Существуют ли какие-либо руководства по надстройке / ссылки, которые охватывают получение информации о методе, просмотр верхней и нижней части метода, вставку текста и т.д.? Я пробовал поискать в Google, и я не получаю myc, который был бы полезен.

Комментарии:

1. Не то чтобы это помогло вам сейчас, но C # 5 будет иметь специальные атрибуты, которые позволяют вам получать имена методов, имена файлов и номера строк в качестве аргументов методов. Довольно интересная вещь.

Ответ №1:

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

Ответ №2:

Возможно, вы захотите рассмотреть нечто, называемое аспектно-ориентированным подходом. Смотрите Аспектно-ориентированное программирование: когда начинать использовать фреймворк? для хорошего начала.