Welcome

首页 / 软件开发 / .NET编程技术 / 元数据与IL简介

元数据与IL简介2014-06-221.3.2       元数据

元数据是描述数据的数据。在CLR的上下文中,元数据表示由描述符组成的一套体系,这些操作符包括了在一个模块中被声明或引用的所有项。由于CLR模型是面向对象的,因此在元数据中描述的项是类和它们的成员,以及它们伴随着的特性、属性和关联。本节简单地介绍元数据,与原数据安全相关的内容会在后续章节中继续讲解,元数据的详细内容不在本书的论述范围之内。

元数据实际上是一块二进制数据,包含了三种表:定义表、引用表和清单表。

元数据定义表主要是模块定义、类型定义、方法定义、字段定义、事件定义、参数定义、属性定义等一系列定义表的集合。当编译器编译代码时,所有定义的内容都会生成对应的定义表。

元数据引用表用于记录编译器中源代码引用的类型、方法、字段、事件。常用的引用表如:AssemblyRef(程序集引用表)、ModuleRef(模块引用表)、TypeRef(类型引用表)等。

元数据清单表包含了组成程序集所需要的所有信息,同时包含了对其他程序集的引用信息。它明确地指出了哪些条目可以对外开放,哪些条目只可以在程序集内部进行访问。

下面通过经典的HelloWorld程序简要分析其中的元数据信息,如代码清单1-7所示。

代码清单1-7 HelloWorld程序代码

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.Read();} } }
下面使用反汇编工具ILDasm打开HelloWorld.exe,双击MANIFEST,图1-7为查看清单信息的截图。ILDasm的使用方法和参数说明请读者参考MSDN文档。

图1-7  查看程序清单信息