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

     

  • 相关阅读:
    Qt 资料大全
    Node.js+websocket+mongodb实现即时聊天室
    win系统下nodejs安装及环境配置
    nginx关于 error_page指令详解.md
    移动前端开发之viewport,devicePixelRatio的深入理解
    Iphone各个型号机型的详细参数,尺寸和dpr以及像素
    H5前端的关于像素解释
    从Pc转向H5开发遇到的适配问题思考
    Safari无痕模式下,storage被禁用问题
    滴滴开源 Vue 组件库— cube-ui
  • 原文地址:https://www.cnblogs.com/vsnb/p/14499734.html
Copyright © 2020-2023  润新知