using System;using System.Reflection;using System.IO;// 读取 .dll 文件byte[] fileData = File.ReadAllBytes("D:\\file.dll");Assembly assembly1 = Assembly.Load(fileData);// 获取 TypeType type1 = assembly1.GetType("namespace.type");// 获取办法MethodInfo method = type1.GetMethod("method");// 创立一个实例object activator = Activator.CreateInstance(type1);// 执行办法并获取返回后果object result = method.Invoke(activator, null);
载入程序集是通过读取为字节数组的形式,这样能够防止 Assembly.LoadFile 办法造成的 .dll 文件被占用问题,这里须要应用绝对路径;获取 Type 时须要在后面加上命名空间,获取办法只需提供办法名称即可;对于静态方法的调用能够不用应用 Activator 类创立实例,所以 Invoke 办法的第一个参数能够为 null,Invoke 办法的第二个参数是 object[] 类型,示意传递给该办法的参数汇合,办法被调用后返回的后果是以 object 类型保留的,在理论状况下当然还须要一个转换操作。