using system.reflection; #region 反射方法 /// <summary> /// 根据路径名称反射指定方法 /// </summary> /// <param name="assemblyname">程序集名称</param> /// <param name="classtype">类名称(从程序集开始索引,如:bll.demo.demo)</param> /// <param name="methodname">方法名</param> /// <param name="params">方法参数</param> /// <returns></returns> public static string reflectionmethodfromname(string assemblyname, string classtype, string methodname, object[] params) { try { assembly assembly = assembly.load(assemblyname); //加载程序集 type t = assembly.gettype(classtype); //参数必须是类的全名 object o = activator.createinstance(t); //创建该类对象 methodinfo mi = t.getmethod(methodname); //获取指定方法 object result = mi.invoke(o, params); //回调执行方法,并获取返回值 return result.tostring(); } catch(exception ex){ throw ex; } } /// <summary> /// 根据路径名称反射类,获取类实例 /// </summary> /// <param name="assemblyname">程序集名称</param> /// <param name="classtype">类名称(从程序集开始索引,如:bll.demo.demo)</param> /// <returns></returns> public static object reflectionclassfromname(string assemblyname, string classtype) { try { assembly assembly = assembly.load(assemblyname); //加载程序集 type t = assembly.gettype(classtype); //参数必须是类的全名 object o = activator.createinstance(t); //创建该类对象 return o; } catch (exception ex) { throw ex; } } #endregion
注:invoke的第一个参数为类实例,第二个参数为反射的方法的参数列表,如无参数直接传入null即可。
通过反射,可以通过参数动态的调用指定的方法,降低结构间的耦合性
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论