C#反射

加载dll

var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Device.Interface.dll");

var assembly = Assembly.LoadFrom(path);

获取程序集指定名称的类实例

var type = assembly.GetType("Device.Interface.Tool");


获取类的方法(示例为获取公共的静态方法)

var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public);

method.Invoke()的第一个参数为类实例,如果调用静态方法,此参数为空;第二个参数为调用方法的输入参数。


执行静态方法,第一个参数为null

type.GetMethod(methodName).Invoke(null, new object[]{});


执行实例方法,先创建类实例,再调用方法:

var instance = Activator.CreateInstance(type);
type.GetMethod(methodName).Invoke(instance, new object[]{});
原文地址:https://www.cnblogs.com/baiqjh/p/3425751.html