当前位置:编程学习 > C#/ASP.NET >>

反射有什么用啊,一般哪里用到他啊

反射有什么用啊,一般哪里用到他啊 --------------------编程问答-------------------- MSDN关于反射的解释:http://msdn.microsoft.com/zh-cn/library/vstudio/f7ykdhsy.aspx
用处:
场景一,插件机制
场景二,使用反射动态的获取属性值 

我理解的反射就这么多,后面还有高人解释。 --------------------编程问答-------------------- 可以动态的获取程序集信息 --------------------编程问答-------------------- 一般用的多的是特性。。 --------------------编程问答--------------------
引用 3 楼 Mockqi 的回复:
一般用的多的是特性。。

特性是什么啊 --------------------编程问答--------------------
引用 4 楼 yanchengcs 的回复:
引用 3 楼 Mockqi 的回复:一般用的多的是特性。。
特性是什么啊


http://blog.csdn.net/helloguonan/article/details/5912032 --------------------编程问答-------------------- 对于你来说,理解1L说的就足够了。其余细节用后便知,现在去关心这些枝节毫无意义,只会让你从一个名词的困惑跳转到另一个名词的困惑而不得要领。 --------------------编程问答--------------------
引用 楼主 yanchengcs 的回复:
反射有什么用啊,一般哪里用到他啊


楼主, 上面的人说的, 也许是对的, 但是确实太抽象了点。 哥给你讲个实用的例子吧。 

在一个表单页面, 有很多表单控件(TextBox, DropDownList之类)。 在修改一条记录时, 我们都要先取实体, 类似: 
User user = new UserBLL().GetByID(userid); //当然,也可能是:DataTable dt = new UserBLL().GetDTByID(userid);

然后, 一个一个地赋值:
this.UserName.Text = user.UserName; //某些公司要求前缀,就是 txtUserName 了。 
....

如果控件数量少还好, 几十上百个的时候, 就真成了一个没有任何技术含量的体力活了。

但你看到没有:控件名称与实体对象的属性是一样的(最多是多个前缀而已),怎么样才能利用这个相似性来自动完成赋值呢?

这就要用到反射了。 

可以写一个方法: AutoSetControlValue, 参数: 
1. Control 控件的外围容器控件(如form);
2. 实体对象

外循环遍历外围容器的其中的所有表单控件。
内循环遍历此实体对象所在类的所有属性, 如发现有与控件同名的, 将值赋给对应的表单控件。

就是这样, 简单吧。
--------------------编程问答-------------------- 控件开发会用到。
有两个最实际最易懂的例子
1、在用VS开发.net程序时,拖一个控件在页面上,相应的属性面板中会出现这个控件的所有属性、事件等,并且可以设置,这些就是利用了反射机制,自动反射出了控件的相关信息。
2、MSDN中的诸多帮助信息,每个类的每个属生、方法等等,也是利用了反射机制。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,