C# 反射 静态类 静态方法 static

时间:2025-02-07 09:22:05

C# 通过反射调用实例类或静态类的方法

一、创建类

//反射对象类
//ruleAssembly为dell文件、ruleNmspaceName :命名空间;ruleClsName:类名 
//如果是泛型,ruleClsName后面需要增加一个“`1”
Type ruleType = Assembly.Load(ruleAssembly).GetType(ruleNmspaceName + "." + ruleClsName, true, true);
//反射非本程序集中的类需要先使用加载
//反射本程序集中的类可直接使用GetTypeGetType,无须加载
//Type ruleType = (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 = (ruleType, args);