有一个asp.net网页。在Page_Load
内部,可能会有多个方法调用(MethodA
,MethodB(arg1, arg2)
等。)
我有httpmodule。访问该页面时,它将首先通过httpmodule。
在hpttpmodule中,我想查找或列出当前正在执行的页面Page_Load
中调用的所有方法。
通过这种方式,我想确保在MethodA
事件中实现具有其签名的特定方法(Page_Load
)。
我将欣赏任何实现,天气httpmodule,基页,抽象类,接口,反射等...实现此目标的任何事情。
由于
答案 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
是您要在其中查找所有调用的类中方法的名称。