MetadataReader 类

定义

读取 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 流解码的信息;如果流不存在,则为 null

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 编码的字节序列生成字符串实例的解码器。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetAssemblyDefinition()

读取 ECMA 335 CLI 规范定义的元数据。

GetAssemblyFile(AssemblyFileHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetAssemblyName(String)

获取给定文件的 AssemblyName

GetAssemblyReference(AssemblyReferenceHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetBlobBytes(BlobHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetBlobContent(BlobHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetBlobReader(BlobHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetBlobReader(StringHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetConstant(ConstantHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetCustomAttribute(CustomAttributeHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetCustomAttributes(EntityHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetCustomDebugInformation(CustomDebugInformationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetCustomDebugInformation(EntityHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetDocument(DocumentHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetEventDefinition(EventDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetExportedType(ExportedTypeHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetFieldDefinition(FieldDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetGenericParameter(GenericParameterHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetGenericParameterConstraint(GenericParameterConstraintHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetGuid(GuidHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetImportScope(ImportScopeHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetInterfaceImplementation(InterfaceImplementationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetLocalConstant(LocalConstantHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetLocalScope(LocalScopeHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetLocalScopes(MethodDebugInformationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetLocalScopes(MethodDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetLocalVariable(LocalVariableHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetManifestResource(ManifestResourceHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMemberReference(MemberReferenceHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMethodDebugInformation(MethodDebugInformationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMethodDebugInformation(MethodDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMethodDefinition(MethodDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMethodImplementation(MethodImplementationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetMethodSpecification(MethodSpecificationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetModuleDefinition()

读取 ECMA 335 CLI 规范定义的元数据。

GetModuleReference(ModuleReferenceHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetNamespaceDefinition(NamespaceDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetNamespaceDefinitionRoot()

读取 ECMA 335 CLI 规范定义的元数据。

GetParameter(ParameterHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetPropertyDefinition(PropertyDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetStandaloneSignature(StandaloneSignatureHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetString(DocumentNameBlobHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetString(NamespaceDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetString(StringHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetType()

获取当前实例的 Type

(继承自 Object)
GetTypeDefinition(TypeDefinitionHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetTypeReference(TypeReferenceHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetTypeSpecification(TypeSpecificationHandle)

读取 ECMA 335 CLI 规范定义的元数据。

GetUserString(UserStringHandle)

读取 ECMA 335 CLI 规范定义的元数据。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

扩展方法

GetEditAndContinueLogEntries(MetadataReader)

枚举 EnC 日志的条目。

GetEditAndContinueMapEntries(MetadataReader)

枚举 EnC 映射的条目。

GetHeapMetadataOffset(MetadataReader, HeapIndex)

返回从元数据开始处到指定堆的偏移量。

GetHeapSize(MetadataReader, HeapIndex)

返回指定堆的大小。

GetNextHandle(MetadataReader, BlobHandle)

返回 Blob 堆中给定句柄之后的 Blob 句柄,或返回零句柄(如果它是最后一个句柄)。

GetNextHandle(MetadataReader, StringHandle)

返回字符串堆中给定句柄之后的字符串句柄,或返回零句柄(如果它是最后一个句柄)。

GetNextHandle(MetadataReader, UserStringHandle)

返回 UserString 堆中给定句柄之后的 UserString 句柄,或返回零句柄(如果它是最后一个句柄)。

GetTableMetadataOffset(MetadataReader, TableIndex)

返回从元数据开始处到指定表的偏移量。

GetTableRowCount(MetadataReader, TableIndex)

返回指定表中的行数。

GetTableRowSize(MetadataReader, TableIndex)

返回指定表中行的大小。

GetTypesWithEvents(MetadataReader)

枚举定义一个或多个事件的类型。

GetTypesWithProperties(MetadataReader)

枚举定义一个或多个属性的类型。

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

给定的类型句柄和签名 blob 中的原始类型种类决定目标类型是值类型还是引用类型。

GetHeapOffset(MetadataReader, Handle)

获取与 reader 上下文中的指定 handle 相对应的元数据堆数据的偏移量。

GetRowNumber(MetadataReader, EntityHandle)

获取与 reader 上下文中的指定 handle 相对应的元数据表项的行号。

GetToken(MetadataReader, EntityHandle)

获取 reader 上下文中的指定 handle 的元数据标记。

GetToken(MetadataReader, Handle)

获取 reader 上下文中的指定 handle 的元数据标记。

适用于