zoukankan      html  css  js  c++  java
  • Reflection反射

    Reflection

    1.正常的调用
    //1.加载程序集 参数:【完整程序集名称】
    Assembly assembly = Assembly.Load("Common");

    //2.获取类型 参数:【完整类型名称】
    Type type = assembly.GetType("Common.Implemented.MySqlHelper");

    //3.创建类型实例
    object instance = Activator.CreateInstance(type);

    //4.类型转换【依赖抽象】
    ISqlHelper sqlHelper = instance as ISqlHelper;

    //5.执行方法
    sqlHelper.Query();
    2.多个构造函数调用
    //1.加载程序集 【完整程序集名称】
    Assembly assembly = Assembly.Load("Common");
    //2.获取类型 【完整类型名称】
    Type type = assembly.GetType("Common.Implemented.MySqlHelper");
    //3.创建类型实例【默认无参构造函数】
    object oTest1 = Activator.CreateInstance(type);
    //调用有参数的构造函数 【输入构造函数参数】
    object oTest3 = Activator.CreateInstance(type, new object[] { "123123" });
    3.泛型调用
    //1.加载程序集 【完整程序集名称】
    Assembly assembly = Assembly.Load("Common");
    //2.获取类型 【完整类型名称】[泛型`泛型个数]
    Type type = assembly.GetType("Common.Implemented.MyGenericSqlHelper`1");
    //3.指定 泛型类型
    Type typeMake = type.MakeGenericType(new Type[] { typeof(int) });
    //4.创建类型 实例化对象【默认构造函数】
    object oTest1 = Activator.CreateInstance(typeMake);
    //调用有参数的构造函数【输入构造函数参数】
    object oTest3 = Activator.CreateInstance(typeMake, new object[] { "123123" });
    4.调用私有构造函数--破坏单例
    //1.加载程序集 【完整程序集名称】
    Assembly assembly = Assembly.Load("Common");
    //2.获取类型 【完整类型名称】[泛型`泛型个数]
    Type type = assembly.GetType("Common.Implemented.Singleton");
    //3.创建类型 实例化对象【默认构造函数】私有的
    object oTest1 = Activator.CreateInstance(type, true);

     

  • 相关阅读:
    系统并发报too much open files 错误
    plsql 安装Some Oracle Net versions cannot connect from a path with parentheses
    mysql登录报错
    web.xml配置文件详解之一servlet配置
    hibernate createQuery查询传递参数的两种方式
    mysql登录连接远程数据库命令行
    java 项目打包部署 过程
    flex ArrayCollection的新增与删除的同步
    加大eclipse以及jvm的内存
    2017 八月 UFED Series Releases 系列 6.3 重大更新发布
  • 原文地址:https://www.cnblogs.com/vsnb/p/14499734.html
Copyright © 2011-2022 走看看