c# 动态调用方法
1 /// <summary> 2 /// 动态反射 3 /// </summary> 4 /// <param name="cName">类,含命名空间(命名空间+类名,程序集即项目名称)</param> 5 /// <param name="fName">方法</param> 6 /// <param name="objArray">传参</param> 7 /// <returns></returns> 8 public async Task<List<T>> ReflectClassAndFunction<T>(string cName, string fName, object[] objArray) 9 { 10 try 11 { 12 //获取类 13 Type type = Type.GetType(cName); 14 //获取类下的信息 15 ConstructorInfo constructor = type.GetConstructors().FirstOrDefault(); 16 ParameterInfo[] parameter = constructor.GetParameters(); 17 //实例类的传参,数据链接和用户 18 object[] dllArray = new object[parameter.Length]; 19 dllArray[0] = _dbClient; 20 dllArray[1] = _userManager; 21 //创建指定类实例 22 object obj = Activator.CreateInstance(type, dllArray); 23 //获取指定方法:方法名,查找成员类型 24 MethodInfo method = type.GetMethod(fName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); 25 //执行方法 26 Task<List<T>> rudy = (Task<List<T>>)method.Invoke(obj, objArray); 27 //返回结果 28 return rudy.Result; 29 } 30 catch (Exception ex) 31 { 32 throw Oops.Oh(ex.Message); 33 } 34 }