反射的作用
反射提供这样几个能力:
1、查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata);
2、迟绑定(Late-Binding)方法和属性。
3、动态创建类型实例(并可以动态调用所创建的实例的方法、字段、属性)。
Type对象实例
1、反射的核心是Type类。(此类封装了关于对象的信息,也是进行反射的入口),获取它的对象,可以根据type提供的属性和方法获取这个类的方法,字段,属性,事件,参数,构造函数等。
2、获取Type对象有两种形式:
A:获取当前加载程序集中的类型(Runtime)。
B: 获取没有加载的程序及的类型。
3、获取方法:
1):使用静态方法GetType()
e.g. Type t = Type.GetType("System.String");
Console.Write(t.ToString());
2):使用typeof操作符
e.g. Type t=typeof("String");
3):使用类型实例
e.g. String userName="kenn";
Type t=username.GetType();
注意:使用这个方法,Type对象中不包含关于这个特定对象的信息,认识保存对象类型(string)的信息。
4、Type提供的属性:
属 性---------------------------- 说 明
Name -----------------------------获取类型名称
FullName -------------------------类型全名
Namespace ------------------------命名空间名称
BaseType -------------------------获取对于基类的Type类型的引用
UnderlyingSystemType -------------在.Net中映射的类型的引用
Attributes -----------------------获取TypeAttributes位标记
IsValueType ----------------------是否值类型
IsByRef --------------------------是否由引用传递
IsEnum ---------------------------是否枚举
IsClass --------------------------是否类
IsInterface ----------------------是否接口
IsSealed -------------------------是否密封类
IsPrimitive ----------------------是否基类型(比如int)
IsAbstract -----------------------是否抽象
IsPublic -------------------------是否公开
IsNotPublic ----------------------是否非公开
IsVisible ------------------------是否程序集可见
5、Type提供的方法信息:
FiledInfo:封装的关于字段的相关信息。
PropertyInfo:发现属性(Property)的属性(Attribute)并提供对属 性(Property)元数据的访问。
ConstructorInfo(值类型),MethodInfo(方法类型),EventInfo(事件),ParameterInfo(封装方法的参数信息)
注意:Type类型以及所有的Info类型均继承自MemberInfo类型(此类型 提供了获取类型基础信息的能力)。