Найдено результатов: 2

Используете ли вы AOP (аспектно-ориентированное программирование) в производственном программном обеспечении?

AOP -это интересная парадигма программирования, на мой взгляд. Однако здесь, на stackoverflow, об этом еще не было разговоров (по крайней мере, я не смог их найти). Что вы вообще об этом думаете? Вы используете AOP в своих проектах? Или вы думаете, что это скорее нишевая технология, которая не будет существовать в течение длительного времени или не войдет в мейнстрим (как OOP, по крайней мере, в теории ;))?

Если вы используете AOP, пожалуйста, сообщите нам, какие инструменты вы также используете. Спасибо!

aop   paradigms    

434   11   17:58, 13th August, 2020


Как перехватить вызов метода в C#?

Для данного класса я хотел бы иметь функцию трассировки, т. е. я хотел бы регистрировать каждый вызов метода (подпись метода и фактические значения параметров) и каждый выход метода (только подпись метода).

Как я могу это сделать предполагая что:

  • Я не хочу использовать какую-либо третью сторону AOP библиотеки для C#,
  • Я не хочу добавлять дубликат кода ко всем методам, которые я хочу trace,
  • Я не хочу изменять public API класса - пользователи класса должны иметь возможность вызывать все методы точно таким же образом.

Чтобы сделать вопрос более конкретным предположим что есть 3 класса:

 public class Caller 
 {
     public static void Call() 
     {
         Traced traced = new Traced();
         traced.Method1();
         traced.Method2(); 
     }
 }

 public class Traced 
 {
     public void Method1(String name, Int32 value) { }

     public void Method2(Object object) { }
 }

 public class Logger
 {
     public static void LogStart(MethodInfo method, Object[] parameterValues);

     public static void LogEnd(MethodInfo method);
 }

Как вызвать Logger.LogStart и Logger.LogEnd для каждого вызова Method1 и Method2 без изменения метода Caller.Call и без добавления вызовов явно в Traced.Method1 и Traced.Method2 ?

Edit: каким будет решение, если мне будет разрешено немного изменить метод вызова?

c#   reflection   aop    

518   15   08:44, 22nd August, 2020