MetadataReader 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
读取 ECMA 335 CLI 规范定义的元数据。
public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
- 继承
-
MetadataReader
示例
此示例演示如何为程序集创建 MetadataReader 并从中读取所有类型定义:
using var fs = new FileStream("Example.dll", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using var peReader = new PEReader(fs);
MetadataReader mr = peReader.GetMetadataReader();
foreach (TypeDefinitionHandle tdefh in mr.TypeDefinitions)
{
TypeDefinition tdef = mr.GetTypeDefinition(tdefh);
string ns = mr.GetString(tdef.Namespace);
string name = mr.GetString(tdef.Name);
Console.WriteLine($"{ns}.{name}");
}
注解
MetadataReader 从指定的 CLI 元数据中读取表和堆的内容。 它操作低级别构造,例如类型和方法定义。 有关使用反射构造检查程序集内容的更高级别的 API,请参阅 MetadataLoadContext。
可以使用构造函数(如 MetadataReader(Byte*, Int32))为给定的内存位置创建 的 MetadataReader 实例。 若要从可移植可执行文件程序集文件读取元数据,请创建 PEReader 并使用 GetMetadataReader(PEReader) 扩展方法。
CLI 元数据的格式由 ECMA-335 规范定义。 有关详细信息,请参阅 Ecma 国际网站上的标准 ECMA-335 - 公共语言基础结构 (CLI) 。
构造函数
MetadataReader(Byte*, Int32) |
从存储在给定内存位置的元数据初始化 MetadataReader 类的新实例。 |
MetadataReader(Byte*, Int32, MetadataReaderOptions) |
从存储在给定内存位置的元数据初始化 MetadataReader 类的新实例。 |
MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder) |
从存储在给定内存位置的元数据初始化 MetadataReader 类的新实例。 |
属性
AssemblyFiles |
读取 ECMA 335 CLI 规范定义的元数据。 |
AssemblyReferences |
读取 ECMA 335 CLI 规范定义的元数据。 |
CustomAttributes |
读取 ECMA 335 CLI 规范定义的元数据。 |
CustomDebugInformation |
读取 ECMA 335 CLI 规范定义的元数据。 |
DebugMetadataHeader |
获取从 #Pdb 流解码的信息;如果流不存在,则为 |
DeclarativeSecurityAttributes |
读取 ECMA 335 CLI 规范定义的元数据。 |
Documents |
读取 ECMA 335 CLI 规范定义的元数据。 |
EventDefinitions |
读取 ECMA 335 CLI 规范定义的元数据。 |
ExportedTypes |
读取 ECMA 335 CLI 规范定义的元数据。 |
FieldDefinitions |
读取 ECMA 335 CLI 规范定义的元数据。 |
ImportScopes |
读取 ECMA 335 CLI 规范定义的元数据。 |
IsAssembly |
获取用于指示元数据是否表示程序集的值。 |
LocalConstants |
读取 ECMA 335 CLI 规范定义的元数据。 |
LocalScopes |
读取 ECMA 335 CLI 规范定义的元数据。 |
LocalVariables |
读取 ECMA 335 CLI 规范定义的元数据。 |
ManifestResources |
读取 ECMA 335 CLI 规范定义的元数据。 |
MemberReferences |
读取 ECMA 335 CLI 规范定义的元数据。 |
MetadataKind |
获取元数据类型。 |
MetadataLength |
获取基础数据的长度。 |
MetadataPointer |
获取指向基础数据的指针。 |
MetadataVersion |
获取从元数据头读取的版本字符串。 |
MethodDebugInformation |
读取 ECMA 335 CLI 规范定义的元数据。 |
MethodDefinitions |
读取 ECMA 335 CLI 规范定义的元数据。 |
Options |
获取传递给构造函数的 MetadataReaderOptions。 |
PropertyDefinitions |
读取 ECMA 335 CLI 规范定义的元数据。 |
StringComparer |
获取用于比较存储在元数据中的字符串的比较器。 |
TypeDefinitions |
读取 ECMA 335 CLI 规范定义的元数据。 |
TypeReferences |
读取 ECMA 335 CLI 规范定义的元数据。 |
UTF8Decoder |
获取读取器用于从 UTF8 编码的字节序列生成字符串实例的解码器。 |