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

 

原文地址:https://www.cnblogs.com/vsnb/p/14499734.html