我已经尝试过实现Unity的拦截,但是我遇到了一个奇怪的问题,即调用getNext委托会导致一些不必要的递归。
在附带的屏幕截图中,您可以在某些调试过程中看到堆栈跟踪。在这种情况下,我打破了电话:
var methodReturn = getNext()(input, getNext);
现在请注意,此呼叫现已发生5次。这个问题的有趣之处在于它重复的次数取决于呼叫源自我的架构的位置。这里第一次拦截调用发生在SetupSession中,这在我的调用堆栈中相当高,并且重复大约8次。当我降低到我的数据层时,它只发生一次(这是正确的)。
我在这里关注指南:
http://msdn.microsoft.com/en-us/library/dn178466(v=pandp.30).aspx
使用.AddNewExtension()并且我在标准UnityContainer周围有一个装饰器,当调用RegisterType()时为每次注册添加两个额外的注入:
new Interceptor<InterfaceInterceptor>(),
new InterceptionBehavior<NLoggerInterceptor>()
我很丢失,所以欢迎任何想法!
由于