C# 通过反射调用实例类或静态类的方法
一、创建类
//反射对象类
//ruleAssembly为dell文件、ruleNmspaceName :命名空间;ruleClsName:类名
//如果是泛型,ruleClsName后面需要增加一个“`1”
Type ruleType = Assembly.Load(ruleAssembly).GetType(ruleNmspaceName + "." + ruleClsName, true, true);
//反射非本程序集中的类需要先使用Assembly.Load加载
//反射本程序集中的类可直接使用GetTypeGetType,无须Assembly.Load加载
//Type ruleType = Type.GetType(ruleNmspaceName + "." + ruleClsName, true, true);
//if your class contains genericParameters
ruleType = ruleType.MakeGenericType(modelType);
二、创建类的对象
object ruleObj = Activator.CreateInstance(ruleType, new object[] { studioGeneric });
三、创建方法
//不懂BindingFlags参数的,自行查资料
MethodInfo method = ruleType.GetMethod(Method, BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.CreateInstance | BindingFlags.Public);
//if your method Contains GenericParameters
method = method.MakeGenericMethod(modelType);//单方法泛型参数赋值
四、调用方法
object obj = method.Invoke(ruleObj, args);
// only it's static class
//object obj = method.Invoke(ruleType, args);