初步了解反射案列

internal class Program
{
private static void Main(string[] args)
{
//IDBHelper objDBHelper = new DBHelper();
//objDBHelper.Query();
Console.WriteLine("***********Reflection**************");
string nameSpace = ConfigurationManager.AppSettings["Idiosoft.DB.Interface.IDBHelper"]; //获取配置文件
string[] nameSpaceArray = nameSpace.Split(',');

//Assembly assembly = Assembly.Load("Idiosoft.DB.Sqlserver");//根据反射动态的加载
Assembly assembly = Assembly.Load(nameSpaceArray[1]);//根据反射动态的加载
Console.WriteLine("***********GetModules**************");
foreach (Module module in assembly.GetModules())
{
Console.WriteLine("名称:{0}", module.FullyQualifiedName);
}
Console.WriteLine("***********GetTypes**************");

foreach (Type type in assembly.GetTypes())
{
Console.WriteLine("名称:{0}", type.FullName);
}
Console.WriteLine("***********创建对象**************");
//Type dbHelperType = assembly.GetType("Idiosoft.DB.Sqlserver.DBHelper");//基于类的完整名称找出准确类型
Type dbHelperType = assembly.GetType(nameSpaceArray[0]);//基于类的完整名称找出准确类型

object oDBHelper = Activator.CreateInstance(dbHelperType);//根据类型创建对象
try
{
IDBHelper objDBHelperReflecton = (IDBHelper)oDBHelper;//强制转换
objDBHelperReflecton.Query();//完成方法的调用
}
catch (Exception ex)
{
}

Console.ReadKey();
}

原文地址:https://www.cnblogs.com/it1042290135/p/7793057.html