我正在学习将拦截器模式与 Ninject 一起使用。
我有一个拦截器如下。
public class MyInterceptor:IInterceptor
{
public void Intercept(IInvocation invocation)
{
Console.WriteLine("Pre Execute: " + invocation.Request.Method.Name);
invocation.Proceed();
Console.WriteLine("Post Execute: " + invocation.Request.Method.Name);
Console.WriteLine("Returned: " + invocation.ReturnValue);
}
}
我正在我的 Main Method 中设置我的 Ninject 内核,如下所示。
kernel = new StandardKernel();
kernel.Bind<MyClass>().ToSelf().Intercept().With(new MyInterceptor());
myClass = kernel.Get<MyClass>();
问题是,在调试对 的方法调用时myClass
,(我在语句上放置一个断点myClass.methodName()
并按 F11)在我看到对我的拦截器的调用之前,有很多堆栈帧要传递,然后是实际的方法调用。
我确实意识到 Ninject 创建了 Dynamic Proxies .etc。在幕后,但这使事情变得更加困难,如果我想查看我的代码流程,从所有拦截器到实际方法。(想象一下调试以查看哪个拦截器阻塞了方法调用)
有没有办法告诉 Visual Studio 不要中断 Ninject 堆栈帧?(反正我没有 Ninject 源)
更新 本质上,我想做的是告诉VS不要破坏我没有源代码的代码......