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);

     

  • 相关阅读:
    CCPC 2017秦皇岛 M Safest Buildings (给一个圆心在原点的大圆R ,以及n个点 在大圆内存在一个小圆r 问那些点同时在两圆的概率最大)
    LightOJ 1366
    Android UI -- 内容简介
    Android 布局优化 -- 学习笔记
    arcgis android 加载google切片 天地图切片 并且能进行缓存
    Eclipse 卸载插件
    Android 不能勾选 Project Build Target
    spatialite-android-library 环境搭建
    HUFFMAN 树
    指示器随机变量
  • 原文地址:https://www.cnblogs.com/vsnb/p/14499734.html
Copyright © 2011-2022 走看看