查找或列出当前执行页面的特定方法内的方法

时间:2012-12-13 04:27:15

标签: c# asp.net .net reflection .net-assembly

有一个asp.net网页。在Page_Load内部,可能会有多个方法调用(MethodAMethodB(arg1, arg2)等。)

我有httpmodule。访问该页面时,它将首先通过httpmodule。

在hpttpmodule中,我想查找或列出当前正在执行的页面Page_Load中调用的所有方法。

通过这种方式,我想确保在MethodA事件中实现具有其签名的特定方法(Page_Load)。

我将欣赏任何实现,天气httpmodule,基页,抽象类,接口,反射等...实现此目标的任何事情。

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

MethodBase methodBase = typeof(INSERT_CLASS_HERE).GetMethod(INSERT_METHOD_HERE);
var instructions = MethodBodyReader.GetInstructions(methodBase);

foreach (Instruction instruction in instructions)
{
MethodInfo methodInfo = instruction.Operand as MethodInfo;

if(methodInfo != null)
{
    Type type = methodInfo.DeclaringType;
    ParameterInfo[] parameters = methodInfo.GetParameters();

    Console.WriteLine("{0}.{1}({2});",
        type.FullName,
        methodInfo.Name,
        String.Join(", ", parameters.Select(p => p.ParameterType.FullName + " " + p.Name).ToArray())
    );
}

}

INSERT_CLASS_HERE是您要查看的班级的名称 INSERT_METHOD_HERE是您要在其中查找所有调用的类中方法的名称。