码迷,mamicode.com
首页 > 其他好文 > 详细

C#学习笔记 ----反射

时间:2014-09-18 16:23:24      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   数据   div   sp   

自定义特性允许把自定义元数据与程序元素关联起来

 

.NET Framework允许用户定义自己的特性

编译器不能识别,但是特性应用于程序元素时,可以在编译好的程序集中用作元数据

示例:

public string SocialSecurityNumber
{
    get{
        //etc.

 

特性类本身用一个特性 ----System.AttributeUsage特性来标记

AttributeUsage主要用于标识自定义特性可以应用到哪些类型的程序元素上

这些信息由它的第一个参数给出,该参数必选,类型是枚举类型AttributeTargets

其成员如下:

All
Assembly
Class
Constructor
Delegate
Enum
Event
Field
GenericParameter
Interface
Method
Module
Parameter
Property
ReturnValue
Struct

 

特性应用到整个程序集或模块中,Assembly和Module

示例:

[assembly:SomeAssemblyAttribute(Parameters)]
[module:SomeAssemblyAttribute(Parameters)]

 

反射

Type实际上是一个抽象基类

 

获取指向任何给定类型的Type引用有3种常用方式:

a.使用C#的typeof运算符

Typet = typeof(double);

b.使用GetType()方法,所有类都从System.Object继承这个方法

double d = 10;
Type t = d.GetType();

c.调用Type类的静态方法GetType()

Type t = Type.GetType("System.Double");

 

Type是许多反射功能的入口

Type属性:

Name  数据类型名

FullName  数据类型的完全限定名(包括名称空间)

Namespace  在其中定义数据类型的名称空间名

BaseType  该Type的直接基本类型

UnderlyingSystemType  该Type在.NET运行库中映射到的类型

 

Type成员方法:

//返回对象类型    //方法
ConstructorInfo    GetConstructor()、GetConstructors()
EventInfo            GetEvent()、GetEvents()
FieldInfo            GetField()、GetFields()
InterfaceInfo    GetInterface()、GetInterfaces()
MemberInfo    GetMember()、GetMembers()
MethodInfo    GetMethod()、GetMethods()
PropertyInfo    GetProperty()、GetProperties()

 

Assembly类在System.Reflection名称空间中定义,它允许访问给定程序集的元数据,它也包含可以加载和执行程序集的方法。

 

加载程序集,示例:

Assembly assembly1 = Assembly.Load("SomeAssembly");
Assembly assembly2 = Assembly.LoadFrom(@"C:\My Projects\Software\SomeOtherAssembly");

获得在相应程序集中定义的所有类型的详细信息,调用Assembly.GetType()方法

查找自定义特性,GetCustomAttribute()

 

C#学习笔记 ----反射

标签:style   blog   color   io   使用   ar   数据   div   sp   

原文地址:http://www.cnblogs.com/bmbh/p/3979346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!