当前位置: 移动技术网 > IT编程>开发语言>.net > Castle Windsor 的动态代理类如何获取实际类型

Castle Windsor 的动态代理类如何获取实际类型

2019年03月08日  | 移动技术网IT编程  | 我要评论

李茂林,外链推广,水星领航员第二季

问题

在实际开发过程当中我们可能会针对某些类型使用动态代理技术(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;
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网