反射

动态加载与反射实例
本文通过实例演示了如何使用C#中的反射技术动态加载并访问类库中的类及方法,展示了动态晚绑定组件的具体实现过程。

反射,可以实现动态晚绑定组件,大道理不说,实例说明问题。
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(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值