反射--调用方法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Reflection; using Leadsoft.Common; public partial class Reflection_reflect : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { #region Ajax程序集应用 ////Type ty = Type.GetType("SystemYW.PM.DAO.AjaxMethod"); //Assembly ass = Assembly.Load("SystemYW"); //Type type = ass.GetType("SystemYW.PM.DAO.AjaxMethod"); //Ajax.Utility.RegisterTypeForAjax(type); #endregion //方法 一 Type te = Type.GetType("SystemYW.PM.DAO.AjaxMethod, SystemYW");//命名空间.类名, 程序序集名称 MethodInfo mi = te.GetMethod("TestS"); object o = Activator.CreateInstance(te);//相当于 object o = new AjaxMethod(); //方法 二 Assembly ass = Assembly.Load("SystemYW");//加载程序集名称 Type type = ass.GetType("SystemYW.PM.DAO.AjaxMethod");//类名称;获取类对象 MethodInfo minfo = type.GetMethod("TestS");//方法名称 object obj = new object(); obj = ass.CreateInstance("SystemYW.PM.DAO.AjaxMethod");//创建该类实例 bool isStatic = minfo.IsStatic; string val = ""; if (isStatic) { //Invoke(实例, 参数列表)
//val = mi.Invoke(null, null).ToString(); val = minfo.Invoke(null, null).ToString();//静态方法不需要实例,所以第一个参数为null } else { val = minfo.Invoke(obj, null).ToString(); } //反射 IControl IC = (IControl)Assembly.Load("SystemYW").CreateInstance("SystemYW.PM.DAO.SavaInput"); string param = "FormID|1"; IC.Sava(param); } }