`

C#学习笔记——反射

 
阅读更多

Type类

BCL声明了一个叫做Type的抽象类,它被设计用来包含类型的特性。使用这个类的对象能让我们获取程序使用的类型的信息。

 

由于Type是抽象类,因此它不能有实例。而是在运行时,CLR创建Type(RuntimeType)派生的类的实力,Type包含了类型信息

Type类对象常用成员

成员 成员类型 描述
Name 属性 返回类型的名称
Namespace 属性 返回包含类型声明的命名空间
GetFields 方法 返回类型的字段列表
GetProperties 方法 返回类型的属性列表
GetMethods 方法 返回类型的方法列表

 

 

获取Type对象

方法一:

object类型包含了一个叫做GetType方法,返回实例的Type对象的引用。

Type t = myInstance.GetType();

 

方法二:

Type t = typeof( DerivedClass );

 

 

 

特性

特性的目的是告诉编译器把程序结构的某组元数据嵌入程序集。

 

告诉编译器把程序结构的某组元数据嵌入程序集。通过特性应用带结构来实现。

    在结构前防止特性片段应用特性。

    特性片段被方括号包围,其中是特性名和特性的参数列表。

 

例:把Serializable的特性应用到MyClass。Serializable没有参数列表。

[Serializable]

public class MyClass

{....}

 

[Myattribute("Simple class","Version 3.57")]

public class MyOtherClass

{...}

 

 

一些有关特性的需要了解的重要事项如下:

    大多数特性只针对直接跟随在一个或多个特性片段后的结构。

    应用了特性的结构称为作为被特性装饰。

 

 

预定义的保留的特性

Obsolete特性

Obsolete特性允许我们将程序结构标注为过期的并且在代码编译时显示有用的警告消息。

例:

class Program

{

    [Obsolete("Use method SuperPrintOut")]    // 将特性应用到方法

    static void PrintOut(str)

    {

        Console.WriteLine(str);

    }

 

    static void Main(string[] args)

    {

        PrintOut("start of Main");

    }

 

}

 

方法依然可以被调用。编译器编译时产生警告消息,通知正在使用一个过期的结构。

 

 

Conditional特性

Conditional特性允许我们包括或排斥某个特定方法的所有调用。为方法声明应用Conditional特性并把编译符作为参数来使用。

 

 

预定义的特性

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第二个包)

    在本书最后一章,专门设计了综合实例——“综合实例1: 照片面积计算机器”和“综合实例2: 文件加密与解密工具”,通过这两个综合实例,既可以将前20章的知识融会贯通,又可以抛砖引玉,真正教会读者开发C#应用...

    C#6.0学习笔记——从第一行C#代码到第一个项目设计(第一个包)

    在本书最后一章,专门设计了综合实例——“综合实例1: 照片面积计算机器”和“综合实例2: 文件加密与解密工具”,通过这两个综合实例,既可以将前20章的知识融会贯通,又可以抛砖引玉,真正教会读者开发C#应用...

    c#高级编程(第四版)学习笔记

    ### C#高级编程(第四版)学习笔记 #### 第1章 .NET体系结构 本章节主要探讨了.NET框架的核心组成部分及其与C#编程语言的关系,深入解析了公共语言运行库(Common Language Runtime, CLR)的功能及优势,并对.NET...

    molaide笔记详细

    《Molaide笔记详解——深度探索C#编程世界》 Molaide,这个名字或许对一些人来说还比较陌生,但它的出现无疑是C#开发者们的一份宝贵资源。这份笔记详尽地涵盖了Molaide的学习路径,旨在帮助读者深入理解C#编程语言...

    CSharpAdvancedModule_OOP:SoftUni

    以上只是C#面向对象编程的部分基础知识,实际学习中,你还会接触到异常处理、反射、LINQ、异步编程等多个主题。"CSharpAdvancedModule_OOP-main"这个文件很可能是整个学习课程的主文件,可能包含了项目代码、笔记、...

Global site tag (gtag.js) - Google Analytics