C#基础|初探反射

王朝学院·作者佚名  2016-05-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

C#基础|初探反射什么是反射我们编写的C#代码都可以编译成exe文件或dll文件。暂时先把他们叫做程序集吧,程序集中包含了很多信息。你写了一个类,类中会有字段,有属性,有方法,编译是会把这些信息保存在程序集中,暂时把这些信息叫做程序类型信息吧。可以肯定的是程序集中包含了程序类型信息。程序类型信息有一个更加专业的术语叫“元数据”(metadata),他们就保存在程序集中。顺着前面的前景提要,来给反射下一个定义吧。一个程序在运行时,查看其他程序集或本身的元数据的行为叫做反射反射实战,创建Type类对象前面说到程序集中包含一个叫元素据的东西,正所谓在面向对象的世界里,万物皆对象,有对象肯定有类型,在C#中有预定义类型(int long string 等)还有程序员自定义类型,比如student类。好奇的你肯定会问那和元数据相关的类叫什么呢?答曰:是一个叫做Type的抽象类,他被设计用来包含类型的各种信息,有那些方法、那些属性、那些特性等各种信息。细心的你肯定会注意到Type类是抽象的,不能够直接new一个,那怎么创建呢?可以使用GetType方法和typeof运算符来创建Type对象解决了创建问题,再来看看Type的属性和方法吧(常见的)属性:Name 返回类型的名字NameSpace 返回包含类型的声明和命名空间Assembly 返回声明类型的程序集方法:GetFields 返回字段列表GetPRoperties 返回属性列表GetMethods 返回类型的方法列表看下面的代码了。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 using System.Reflection; //使用反射必须导入这个命名空间 7 namespace cShap基础学习 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 Student stu = new Student();14 Type t1 = stu.GetType(); //通过GetType方法创建;15 Type t2 = typeof(Student); //通过typeof操作符创建16 //我们来看看Type获取到了什么东西吧17 Console.WriteLine("Student类型的name是:{0}", t1.Name);18 Console.WriteLine("Student类型命名空间是:{0}", t1.Namespace);19 20 //获得Student的方法列表21 foreach(var m in t1.GetMethods() )22 {23 Console.WriteLine("方法的名字->{0},返回值->{1}", m.Name, m.ReturnType);24 }25 26 27 }28 }29 30 class Student31 {32 public void SayHello()33 {34 Console.WriteLine("Hello~~");35 }36 37 public void SayHi()38 {39 Console.WriteLine("Hi``");40 }41 public String name;42 private String pwd;43 }44 }

运行结果关于Type类在MSDN的资料:http://msdn.microsoft.com/zh-cn/library/system.type.aspx《完》

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航