gpt4 book ai didi

aop - Ninject拦截扩展中的拦截接口(interface)方法

转载 作者:行者123 更新时间:2023-12-04 14:02:56 25 4
gpt4 key购买 nike

我正在玩 Ninject Interception 扩展。 Ian Davis's blog post about 它表明拦截总是基于实际的服务类型,而不是接口(interface)。例如,以下代码将不起作用,因为 IFoo是一个接口(interface):

Kernel.InterceptBefore<IFoo>(f => f.DoSomething(), 
i => Console.WriteLine("before"));

当然,下一段代码只有在 Foo.DoSomething 时才有效。是 virtual :
Kernel.InterceptBefore<Foo>(f => f.DoSomething(), 
i => Console.WriteLine("before"));

对于面向方面的编程,这似乎是一个非常明显的漏洞。我对接口(interface)编程非常认真,以便我们可以使用模拟框架来模拟我们的各种服务,但我的绝大多数实际方法实现都不是虚拟的。如果模拟框架可以产生 IFoo使用一种可以满足我要求的方法,Ninject 似乎应该能够做到。

所以我想我的问题有两个:
  • Ninject Interception 是否有任何理由不允许您绑定(bind)到接口(interface)方法?
  • 有没有一种简单的方法可以让 Ninject 绑定(bind)到动态“包装器”类,让我对所有接口(interface)方法执行某些拦截操作,然后将调用传递给真正的实现?
  • 最佳答案

    我对此做了一些调整,似乎有可能将该行为纳入拦截扩展。但正如我们计划在不久的将来发布 2.2 版本一样,您必须要有一点耐心。我很喜欢这个改变,所以我计划将它添加到 2.4。峰值也远没有产生效果。所有当前的单元测试都在运行。但是有很多新的需要添加这个功能。如果你喜欢我可以给你发一个补丁,但我不会给你任何支持和保证它目前没有错误。

    关于aop - Ninject拦截扩展中的拦截接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950965/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com