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

     

  • 相关阅读:
    【凸优化】【长链剖分】【2019冬令营模拟1.8】tree
    2019冬令营集训1月7-10日总结
    item()方法遍历字典
    contiue和break的用法
    内存地址与变量值的关系
    Python垃圾回收机制
    Python的小整数池
    常量的命名和注意事项
    基本运算符
    Python中最简单快捷的输出方式
  • 原文地址:https://www.cnblogs.com/vsnb/p/14499734.html
Copyright © 2011-2022 走看看