0

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

我有http模块。在访问页面时,它首先会通过 httpmodule。

在该 hpttpmodule 中,我想查找或列出在当前执行页面的Page_Load.

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

我将欣赏任何实现,天气 httpmodule,基页,抽象类,接口,反射等......任何实现这个目标的东西。

谢谢

4

1 回答 1

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是您要在其中查找所有调用的类中的方法的名称。

于 2012-12-13T05:07:27.927 回答