Castle Windsor 的动态代理类如何获取实际类型
程序员文章站
2022-09-27 18:50:09
问题 在实际开发过程当中我们可能会针对某些类型使用动态代理技术(AOP),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类。这个时候在该类内部使用 方法获取到的 类型并不是实际类型的 ,而是代理类的 。 解决 那么我们如何在代理类当中获取到具体类型的 呢?其实 Cast ......
问题
在实际开发过程当中我们可能会针对某些类型使用动态代理技术(aop),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类。这个时候在该类内部使用 gettype()
方法获取到的 type
类型并不是实际类型的 type
,而是代理类的 type
。
解决
那么我们如何在代理类当中获取到具体类型的 type
呢?其实 castle 给我们提供了一个工具类,叫做 proxyutil
,可以使用该工具类来获取到代理类所拦截的具体类型,下面的代码就是具体的使用方法。
demo 代码:
/// <summary> /// 获得实例对象的真实类型 /// </summary> /// <param name="instance">待获取类型的实例对象</param> /// <returns>实例对象的真实类型</returns> public static type getproxyclassrealtype(this object instance) { type realtype; if (proxyutil.isproxy(instance)) { realtype = proxyutil.getunproxiedtype(instance); } else { realtype = instance.gettype(); } return realtype; }
上一篇: 使用CDPATH快速cd到指定路径
下一篇: Java自学-接口与继承 对象转型