反射作用

有人说是用于这样的场景:“给你一个Dll,但你不知道Dll里有哪些方法,属性之类的,通过反射可以知道Dll文件里的内容”。。我自己尝试了一下,写了一个类编译成DLL后,新建立一个项目,然后把这个DLL引用进来,然后直接左右它,点“在对象浏览器中查看”就能知道它的命名空间和类,然后引用命名空间之后,直接写上类名 x=new 类名()的方式就得到了它的对象,再用x.*就知道它有哪些方法了。。根本用不着什么反射啊。。。。那么请问高手们,反射主要用于什么地方呢?谢谢!
2011-12-30 16:09提问者采纳
反射这东西相当复杂,十本书都难以介绍完。给你一个简单例子吧。
比如有一个猫类:
public class Cat
{
public int Age { get; set; }
public string Name { get; set; }
//假设它的属性还有很多很多
}
现在问题是:我NEW一个猫叫"小猫1",我想复制这一个对象,“小猫2”,那该怎么处理呢?
像下面这样吗:
Cat c1 = new Cat() { Age=20,Name="小猫1" };
Cat c2=c1;
那这样肯定是错的。因为c1和c2都引用的是同一个对象“小猫1”,那我现在想复制一个跟小猫1一模一样的对象怎么处理呢?这里就用到了反射:
方法:
protected void Page_Load(object sender, EventArgs e)
{

Cat c1 = new Cat() { Age=20,Name="小猫" };
Type type = typeof(Cat);
Cat c2 = new Cat();
foreach (System.Reflection.PropertyInfo info in type.GetProperties())
{

info.SetValue(c2, info.GetValue(c1, null), null);
}
Label1.Text = c2.Name;
Label2.Text = c2.Age.ToString();
}
不要告诉我你看不懂....



======================

clone
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值