閱讀845 返回首頁    go 阿裏雲 go 技術社區[雲棲]


反射

反射,可以實現動態晚綁定組件,大道理不說,實例說明問題。
1.新建項目,項目結構如圖:一個類庫,一個網站;類庫中包含2個類;

2.不添加引用,實現查看,調用類庫中的方法,屬性等;效果如圖:

(訪問類庫中的類)

(訪問指定類中的方法)

3.代碼:①user1.cs,user2.cs兩者都一樣,隻是類名不同。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClassLibrary1 { public class user1(user2) { string name = "這是一個程序集,恭喜您已經動態獲取到了值!"; public string Name { get { return name; } set { name = value; } } short age; public short Age { get { return age; } set { age = value; } } public string GetName() { return this.Name; } } }

4.Default.aspx 的後台代碼:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; //引用反射的命名空間; using System.Reflection; namespace Demo { public partial class WebForm : System.Web.UI.Page { Assembly myObj; protected void Page_Load(object sender, EventArgs e) { //①加載程序集,路徑為程序集所在的物理路徑; myObj = Assembly.LoadFrom(@"E:/1.網站設計與開發/7.【睿智匯海.Net課程視頻專區】/29. 反射/Demo/ClassLibrary1/bin/Debug/ClassLibrary1.dll"); } protected void Button2_Click(object sender, EventArgs e) { //將程序集中的方法動態綁定到下拉列表框; drl.DataSource =myObj .GetTypes(); drl.DataBind (); } protected void drl_SelectedIndexChanged(object sender, EventArgs e) { Type tp = myObj.GetType(drl.SelectedItem.Text);//獲取類型; object sl = Activator.CreateInstance(tp);//創建實例; drlMethod.DataSource = myObj.GetType(sl.ToString()).GetMethods();//訪問實例中的方法; drlMethod.DataBind(); } }

最後更新:2017-04-02 04:00:25

  上一篇:go 序列化和反序列化
  下一篇:go 1.使用XMLHttPRequest控件異步獲取數據