gpt4 book ai didi

c# - Unity IOC、AOP & 接口(interface)拦截

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:58 26 4
gpt4 key购买 nike

我一直在使用 Unity 来做一些 AOP 的事情,通过 IOC 进行设置,例如:

ioc.RegisterType<ICustomerService, CustomerService>()
.Configure<Interception>().SetInterceptorFor<ICustomerService>(new InterfaceInterceptor());

...然后在 ICustomerService 接口(interface)的方法上有一个 ICallHandler。目前我只想获取调用的方法、它所在的类以及该类的命名空间。所以...在...里面

public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) 

...ICallHandler 的方法,我可以通过 input.MethodBase.Name 访问方法名称...如果我使用 input.MethodBase.DeclaringType.Name 我会得到接口(interface) ICustomerService...但是...如何我要获取实现类“CustomerService”而不是接口(interface)?

有人告诉我使用 input.Target.. 但它只返回“DynamicModule.ns.Wrapped_ICustomerService_4f2242e5e00640ab84e4bc9e05ba0a13”

对这些人有什么帮助吗?

最佳答案

我前段时间尝试过做类似的事情,我通过 Unity 源代码做了一些研究,我想出的唯一解决方案是通过私有(private)字段的反射获取 CustomerService 实例input.Target(我不记得它的名字了,你可以很容易地在调试器中找到它)。我知道这不是一个优雅且可维护的解决方案,但看起来这是我们所能做的。

关于c# - Unity IOC、AOP & 接口(interface)拦截,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1789794/

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