SequencePoint Struktur
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili titik urutan PDB Portabel.
public value class SequencePoint : IEquatable<System::Reflection::Metadata::SequencePoint>
public readonly struct SequencePoint : IEquatable<System.Reflection.Metadata.SequencePoint>
public struct SequencePoint : IEquatable<System.Reflection.Metadata.SequencePoint>
type SequencePoint = struct
Public Structure SequencePoint
Implements IEquatable(Of SequencePoint)
- Warisan
- Penerapan
Contoh
Contoh ini menunjukkan cara membaca titik urutan metode yang ditentukan oleh token metadata dan menampilkan pemetaan baris sumbernya:
public static void ReadSourceLineData(string pdbPath, int methodToken)
{
// Determine method row number
EntityHandle ehMethod = MetadataTokens.EntityHandle(methodToken);
if (ehMethod.Kind != HandleKind.MethodDefinition)
{
Console.WriteLine($"Invalid token kind: {ehMethod.Kind}");
return;
}
int rowNumber = MetadataTokens.GetRowNumber(ehMethod);
// MethodDebugInformation table is indexed by same row numbers as MethodDefinition table
MethodDebugInformationHandle hDebug = MetadataTokens.MethodDebugInformationHandle(rowNumber);
// Open Portable PDB file
using var fs = new FileStream(pdbPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using MetadataReaderProvider provider = MetadataReaderProvider.FromPortablePdbStream(fs);
MetadataReader reader = provider.GetMetadataReader();
if (rowNumber > reader.MethodDebugInformation.Count)
{
Console.WriteLine("Error: Method row number is out of range");
return;
}
// Print source line information as console table
MethodDebugInformation di = reader.GetMethodDebugInformation(hDebug);
Console.WriteLine("IL offset | Start line | Start col. | End line | End col. |");
foreach (SequencePoint sp in di.GetSequencePoints())
{
if (sp.IsHidden)
{
Console.WriteLine($"{sp.Offset.ToString().PadLeft(9)} | (hidden sequence point)");
}
else
{
Console.WriteLine("{0} |{1} |{2} |{3} |{4} |",
sp.Offset.ToString().PadLeft(9),
sp.StartLine.ToString().PadLeft(11),
sp.StartColumn.ToString().PadLeft(11),
sp.EndLine.ToString().PadLeft(9),
sp.EndColumn.ToString().PadLeft(9));
}
}
}
Keterangan
Titik urutan adalah struktur yang berisi pemetaan antara offset IL dan nomor baris dan kolom terkait dalam dokumen sumber tempat IL ini dikompilasi. Titik urutan disimpan dalam MethodDebugInformation
tabel simbol debugging PDB Portabel. Untuk informasi selengkapnya, lihat PDB portabel v1.0: Spesifikasi Format.
Bidang
HiddenLine |
Menentukan nilai nomor baris untuk titik urutan tersembunyi. |
Properti
Document |
Mendapatkan dokumen sumber yang berisi titik urutan ini. |
EndColumn |
Mendapatkan nomor kolom karakter terakhir dalam titik urutan ini. |
EndLine |
Mendapatkan nomor baris karakter terakhir dalam titik urutan ini. |
IsHidden |
Mendapatkan nilai yang menunjukkan apakah titik urutan ini disembunyikan. |
Offset |
Mendapatkan offset IL dari titik urutan ini dari awal isi metode, dalam byte. |
StartColumn |
Mendapatkan nomor kolom karakter pertama dalam titik urutan ini. |
StartLine |
Mendapatkan nomor baris karakter pertama dalam titik urutan ini. |
Metode
Equals(Object) |
Menunjukkan apakah titik urutan saat ini sama dengan objek yang ditentukan. |
Equals(SequencePoint) |
Menunjukkan apakah objek saat ini sama dengan objek lain dengan jenis yang sama. |
GetHashCode() |
Mendapatkan kode hash dari titik urutan ini. |