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


    问题

    在实际开发过程当中我们可能会针对某些类型使用动态代理技术(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;
    }
    
  • 相关阅读:
    Tensorflow实战系列之三:
    Tensorflow实战系列之二:
    scala映射和元组
    scala函数
    scala基础
    Hadoop Eclipse 插件制作以及安装
    理解HBase
    理解HDFS
    Hadoop入门学习路线
    日志框架Log4j
  • 原文地址:https://www.cnblogs.com/myzony/p/10487418.html
Copyright © 2020-2023  润新知