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)생성자를 사용하여 지정된 메모리 위치에 대한 의 instance MetadataReader 만들 수 있습니다. 이식 가능한 실행 파일 어셈블리 파일에서 메타데이터를 읽으려면 확장 메서드를 GetMetadataReader(PEReader) 만들고 PEReader 사용합니다.

CLI 메타데이터의 형식은 ECMA-335 사양에 의해 정의됩니다. 자세한 내용은 Ecma International 웹 사이트의 표준 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로 인코딩된 바이트 시퀀스에서 문자열 인스턴스를 생성하기 위해 reader에서 사용하는 디코더를 가져옵니다.

메서드

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)

해당 항목이 마지막인 경우 nil 핸들 또는 Blob 힙의 지정된 항목 뒤에 오는 Blob에 핸들을 반환합니다.

GetNextHandle(MetadataReader, StringHandle)

해당 항목이 마지막인 경우 nil 핸들 또는 문자열 힙의 지정된 항목 뒤에 오는 문자열에 핸들을 반환합니다.

GetNextHandle(MetadataReader, UserStringHandle)

해당 항목이 마지막인 경우 nil 핸들 또는 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의 메타데이터 토큰을 가져옵니다.

적용 대상