在过去,以一种语言编写的软件组件(.exe 或 .dll)不能方便地使用以另一种语言编写的软件组件。 在这个问题的解决上,COM 向前迈进了一步。 .NET Framework 允许编译器向所有的模块和程序集发出附加的说明性信息,从而使组件互用更加简单。 这种叫做“元数据”的信息有助于组件无缝交互。
元数据是一种二进制信息,用以对存储在公共语言运行时可迁移可执行文件 (PE) 文件或存储在内存中的程序进行描述。 将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。 在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。 当执行代码时,运行时将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等信息。
元数据以非特定语言的方式描述在代码中定义的每一类型和成员。 元数据存储以下信息:
-
程序集的说明。
-
标识(名称、版本、区域性、公钥)。
-
导出的类型。
-
该程序集所依赖的其他程序集。
-
运行所需的安全权限。
-
-
类型的说明。
-
名称、可见性、基类和实现的接口。
-
成员(方法、字段、属性、事件、嵌套的类型)。
-
-
特性。
。修饰类型和成员的其他说明性元素。
元数据存储在 .NET Framework 可迁移可执行文件 (PE:Protable and Executable) 文件的一个部分中,而 Microsoft 中间语言 (MSIL) 则存储在 PE 文件的另一部分中。 文件的元数据部分包含一系列的表和堆数据结构。 MSIL 部分包含 MSIL 和引用 PE 文件元数据部分的元数据标记。 当使用工具(例如,使用 MSIL 反汇编程序 (Ildasm.exe) 来查看代码的 MSIL)时,您可能会遇到元数据标记