Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Запись вызова метода в лог

#c_sharp #attribute #net #рефлексия


Есть такой код:
public class Foo
{
    [Log("Calling bar")]
    public void Bar()
    {
    }
}

Как сделать, чтобы при вызове метода Bar что-то писалось в лог?
Хотелось бы какое-нибудь событие типа OnCall.    


Ответы

Ответ 1



Аспектно-ориентированное программирование Ведение лога и обработка ошибок — типичные примеры сквозной функциональности. PostSharp - одна из лучших библиотек АОП для c# Вот пример аспекта: public class LogAttribute : PostSharp.Aspects.OnMethodBoundaryAspect { // Выполняется перед входом в метод. public override void OnEntry(MethodExecutionArgs args) { Console.WriteLine("Входим в метод {0} класса {1}", args.Method.Name, args.Method.DeclaringType.FullName); } // Выполняется при успешном завершении работы метода public override void OnExit(MethodExecutionArgs args) { Console.WriteLine("Метод {0} класса {1} успешно отработал", args.Method.Name, args.Method.DeclaringType.FullName); } } Быстрый старт PostSharp. Решение задач логгирования и аудита Несколько полезных аспектов для PostSharp

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

Отправить комментарий