直接上代码,引用CommTools.dll、包括aspx显示页面和aspx.cs获取反射数据源代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using CommTools; 8 9 namespace WebAppReflector 10 { 11 public partial class WebForm1 : System.Web.UI.Page 12 { 13 protected void Page_Load(object sender, EventArgs e) 14 { 15 const string NameSpace = "CommTools"; 16 17 //获取CommTools.WebUtils的方法,包括get,set 18 var ass = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(t => t.FullName.Contains(NameSpace)); 19 if (ass == null) { Response.Write("no assembly"); return; } 20 var methods = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetMethods(); 21 ddlMethds.DataSource = methods; 22 ddlMethds.DataBind(); 23 24 //获取CommTools.WebUtils的属性 25 var members = ass.GetType(string.Format("{0}.{1}", NameSpace, "WebUtils")).GetProperties(); 26 ddlMembers.DataSource = members; 27 ddlMembers.DataBind(); 28 29 //获取方法(CommTools.WebUtils类的Get<T>)的请求参数名、类型、返回值类型,public static T Get<T>(string url) 30 var thisMethod = methods.FirstOrDefault(t => t.Name == "Get"); 31 var reqParams = thisMethod.GetParameters(); 32 ddlParams.Items.AddRange(reqParams.Select(t => new ListItem(t.Name + "|" + t.ParameterType.Name)).ToArray()); 33 Response.Write("返回值类型" + thisMethod.ReturnType.ToString() + "<br/>"); //empty:thisMethod.ReturnParameter.Name 34 35 } 36 } 37 }