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 }