反射最初是用在序列化和反序列化的,因为要动态的确定对象的类型,所以用多的化,会影响到程序的性能。
比如在一个aspx文件里声明了一个控件
<asp:Label ID="Label1" runat="server" Text="工作天数:">
这里就用到了反射,在编译成一个页面类的时候,由Reflector动态的确定Label类,是否包含Text属性,然后赋值。所以有时候是不推荐使用服务器控件的,原因也在此。最后要说的是,楼主这种求知的态度固然可贵,可是你这种态度的确需要再斟酌一下,让人有种等着你来施舍分似的...

解决方案 »

  1.   

    那说一下我的浅解吧:特性(Attribute)在实际开发中有用:
      特性是一般用来表示类的性质,比如是否可以序列化,使用什么设计器设计等什么是滥用反射:
      了有点“Call by Name”的味道,就是通过类的名称或成员的名称来调用。反射+特性,有什么实际用处:
      只有在某些条件下使用,并不是使用了就好,也不会因为使用了就不好。按实际情况决定。
      

  2.   

    特性(Attribute)在实际开发中有用=============这,我还真给不出太准确的答案,给LZ一句话“特性是被指定给某一声明的一则附加的声明性信息,并且有了它可以有条件的进行编程。”什么是滥用反射
    =================
    我给你一篇翻译文章,写的还行。
    http://www.cnblogs.com/WuCountry/archive/2007/04/02/697391.html
      

  3.   

    ????
    在编译成一个页面类的时候,由Reflector动态的确定Label类,是否包含Text属性,然后赋值。所以有时候是不推荐使用服务器控件的,原因也在此。===============这里关反射的事吗??从来没有听说过。
      

  4.   

    ????
    在编译成一个页面类的时候,由Reflector动态的确定Label类,是否包含Text属性,然后赋值。所以有时候是不推荐使用服务器控件的,原因也在此。===============这里关反射的事吗??从来没有听说过。===================we have a "Text" attribute, and it's value is "工作天数:". Using reflection, ASP.NET is able to detect whether the control has property by that name, and if so, sets its value to the declared value. 最初的进程间的方法调用就是这么实现的,通过socket传输过去一个方法名,然后通过反射识别出这个方法名来,并调用它,传回值。后来就演变成了reflection。
    其实你仔细想想,一个string格式的类名或者函数名,查找这个类和方法在内存种存在的位置,还是要比对类的元数据的,然后获取这个类和方法在内存中的地址,这么操作的话,显然会有效率上的问题,比起直接得到方法的入口,要多很多工序,这也就是为什么不要滥用reflection的原因。
      

  5.   

    不是高人,随便说说,这里回了http://community.csdn.net/Expert/topic/5672/5672942.xml?temp=.8583948
      

  6.   

    偶更不是高人了唉,这个怎么说呢,当没有达到达到这个高度的时候,或者说欠缺某些实践体验的时候,
    偶真的想到用何种方式给 LZ 描述清楚,我只能说, 特性(Attribute)更多用在诸如自动化工具,继承开发环境(IDE)当中,而具体的实践项目中,比较少用,至于,反射,大多数高级(记住是高级)开发人员,最忌讳的是性能,
      

  7.   

    真的,很多时候,你可以深刻的体会到“纸上谈兵”是什么感觉,很多语言上的特性以及高兴特性,如果没有具体实在的需求,你根本九不会体会到它存在的实用价值,别个再怎么评论,也是别人的,只要有个大概的概念,碰到的的时候,多长几个心眼,做出决策的时候,多查些资料,
    我敢肯定,假如 LZ 在 baidu/googel  输入 .net 特性 或者 反射 性能 
    比这里的答案更加丰富多彩