A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董振海 中级黑马   /  2012-10-11 17:51  /  2258 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于反射 我不是太理解, 一般都在什么情况下用到?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
反射一般和特性一块使用。具体用在哪里?
利用C#反射来查看自定义特性信息与查看其他信息类似,首先基于类型(本例中是DemoClass)获取一个Type对象,然后调用Type对象的GetCustomAttributes()方法,获取应用于该类型上的特性。当指定GetCustomAttributes(Type attributeType, bool inherit) 中的第一个参数attributeType时,将只返回指定类型的特性,否则将返回全部特性;第二个参数指定是否搜索该成员的继承链以查找这些属性。

C#反射:代码

class Program {     
    static void Main(string[] args) {     
       Type t = typeof(DemoClass);     
       Console.WriteLine("下面列出应用于 {0} 的RecordAttribute属性:" , t);     
   
       // 获取所有的RecordAttributes特性     
       object[] records = t.GetCustomAttributes(typeof(RecordAttribute), false);     
   
       foreach (RecordAttribute record in records) {     
           Console.WriteLine("   {0}", record);     
           Console.WriteLine("      类型:{0}", record.RecordType);     
           Console.WriteLine("      作者:{0}", record.Author);     
           Console.WriteLine("      日期:{0}", record.Date.ToShortDateString());     
           if(!String.IsNullOrEmpty(record.Memo)){     
              Console.WriteLine("      备注:{0}",record.Memo);     
           }     
       }     
    }     
}   

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
管海鹏 发表于 2012-10-12 06:13
反射一般和特性一块使用。具体用在哪里?
利用C#反射来查看自定义特性信息与查看其他信息类似,首先基于类 ...

谢谢~ 自己还得在好好研究下, 感觉我在 反射和委托这里比较弱...:(
回复 使用道具 举报
写插件、写底层用到抽象工厂的时候会用到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马