#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
Комментариев нет:
Отправить комментарий