【发布时间】:2012-08-23 02:33:59
【问题描述】:
我正在学习在 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 创建了动态代理 .etc。在幕后,但这使事情变得更加困难,如果我想查看我的代码流程,从所有拦截器到实际方法。 (想象一下调试,看看哪个拦截器阻塞了方法调用)
有没有办法告诉 Visual Studio 不要在 Ninject 堆栈帧上中断? (反正我没有 Ninject 源)
更新 本质上,我想做的是告诉 VS 不要破坏我没有源代码的代码......
【问题讨论】:
标签: c# ninject interceptor ninject-interception