Как автоматически генерировать вызовы регистратора в исходный код на C #? - PullRequest
0 голосов
/ 25 мая 2009

Что я хотел бы сгенерировать в теле метода:

private void SomeMethod()
{
Logger.Log("Entering SomeMethod.");

// do stuff here

Logger.Log("Exiting SomeMethod.")
}

Есть ли инструмент, который может генерировать это для меня? Если нет, и я хотел бы реализовать его сам, то с чего мне начать, какую библиотеку я должен изучить для распознавания методов в исходном коде c #? Простых регулярных выражений должно быть достаточно?

Ответы [ 4 ]

5 голосов
/ 25 мая 2009

Вы определенно ищете здесь PostSharp - Аспектно-ориентированное программирование (AOP) для .NET. Это позволит вам добавлять обработчики, которые выполняются до начала и после окончания произвольных методов, так что вам фактически нужно определить код регистрации только в одном месте.

5 голосов
/ 25 мая 2009

проверить postharp

http://www.postsharp.org/

это структура аспектно-ориентированного программирования. Это позволит вам рисовать ваши методы с атрибутами, которые будут запускать регистраторы, проверки безопасности и т. Д.

1 голос
/ 25 мая 2009

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

Некоторое приближение к "C Sharp Parser" дает несколько возможных результатов: Здесь и здесь

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

1 голос
/ 25 мая 2009

Для этого используйте AOP Framework.

Взгляните на Spring.NET или Castle Dynamic Proxy.

Генерация кода, как правило, не очень хорошая идея в большинстве случаев.

...