相关疑难解决方法(0)

如何在C#中拦截方法调用?

对于给定的类,我希望有跟踪功能,即我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(只是方法签名).

我如何做到这一点假设:

  • 我不想为C#使用任何第三方AOP库,
  • 我不想将重复的代码添加到我想要跟踪的所有方法中,
  • 我不想更改类的公共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);
 }
Run Code Online (Sandbox Code Playgroud)

如何调用Logger.LogStartLogger.LogEnd每次调用方法1方法2,而无需修改Caller.Call方法,没有明确地加入调用Traced.Method1Traced.Method2

编辑:如果我允许稍微更改Call方法,会有什么解决方案?

c# reflection aop

148
推荐指数
7
解决办法
8万
查看次数

如何让函数在VB.net中运行回调

我担心我一直在谷歌搜索,但找不到我理解或可以使用的答案.

在Javascript中,您可以运行一个函数并设置一个在第一个函数运行后调用的回调函数:

function doThis(callBack){
    // do things
    // do things
    if(callBack){
         callBack();
    }
}
Run Code Online (Sandbox Code Playgroud)

请致电: doThis(function () { alert("done") });

因此,在完成操作之后,它会调用警报来告诉您已完成.

但是你如何在VB.NET中使用相同的服务器端?

vb.net asp.net callback

7
推荐指数
1
解决办法
9114
查看次数

标签 统计

aop ×1

asp.net ×1

c# ×1

callback ×1

reflection ×1

vb.net ×1