#region 加载指定的程序集,并且获取该程序集中的所有的类型
////1.加载c:\TestLib.dll 程序集
////现在asm就是TestLib.dll程序集
//Assembly asm = Assembly.LoadFile(@"c:\TestLib.dll");
////2.获取asm这个程序集中的所有的类型
////获取所有类型,包含public类型与非public类型
//// Type[] types = asm.GetTypes();
////获取程序集中的所有的public的类型
//Type[] types = asm.GetExportedTypes();//只有public类型才能获取的到。
////循环遍历把每个类型都输出
//foreach (Type typeItem in types)
//{
// Console.WriteLine(typeItem.Name);
//}
//Console.ReadKey();
#endregion
#region 加载程序集,获取Class1下的所有的方法
//1.加载程序集
Assembly asm = Assembly.LoadFile(@"c:\testlib.dll");
//2.获取Class1这个类型
//typeClass1就表示描述Class1类的type,里面存储的就是Class1的一些相关信息.就可以理解成是Class1的元数据
Type typeClass1 = asm.GetType("TestLib.Class1");
#region 获取当前类型中的所有的非protected非private方法。
////3.获取Class1中的所有的方法
//MethodInfo[] minfos = typeClass1.GetMethods();
////4.遍历每个方法,把每个方法的名称打印出来。
//foreach (MethodInfo methodItem in minfos)
//{
// Console.WriteLine(methodItem.Name);
//}
//Console.ReadKey();
#endregion
#region 获取SayHi方法
MethodInfo method = typeClass1.GetMethod("SayHi");
//输出该方法名
Console.WriteLine(method.Name);
//创建一个Class1类型的对象
object obj=Activator.CreateInstance(typeClass1);
//调用该方法
method.Invoke(obj, null);//由于SayHi方法没有参数,所以第二个参数传递一个null
Console.ReadKey();
#endregion
#endregion