Informasi pemanggil

Dengan menggunakan atribut Info Pemanggil, Anda dapat memperoleh informasi tentang pemanggil ke suatu metode. Anda dapat memperoleh jalur file dari kode sumber, nomor baris dalam kode sumber, dan nama anggota pemanggil. Informasi ini berguna untuk melacak, melakukan penelusuran kesalahan, dan membuat alat diagnostik.

Untuk mendapatkan informasi ini, Anda menggunakan atribut yang diterapkan ke parameter opsional, yang masing-masing memiliki nilai default. Tabel berikut mencantumkan atribut Info Pemanggil yang ditentukan di namespace layanan System.Runtime.CompilerServices:

Atribut Deskripsi Jenis
CallerFilePath Jalur lengkap file sumber yang berisi pemanggil. Ini adalah jalur file pada waktu kompilasi. String
CallerLineNumber Nomor baris dalam file sumber tempat metode dipanggil. Integer
CallerMemberName Nama properti atau metode pemanggil. Lihat bagian Nama Anggota nanti dalam topik ini. String

Contoh

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan atribut ini untuk melacak pemanggil.

open System.Diagnostics
open System.Runtime.CompilerServices
open System.Runtime.InteropServices

type Tracer() =
    member _.DoTrace(message: string,
                      [<CallerMemberName; Optional; DefaultParameterValue("")>] memberName: string,
                      [<CallerFilePath; Optional; DefaultParameterValue("")>] path: string,
                      [<CallerLineNumber; Optional; DefaultParameterValue(0)>] line: int) =
        Trace.WriteLine(sprintf $"Message: {message}")
        Trace.WriteLine(sprintf $"Member name: {memberName}")
        Trace.WriteLine(sprintf $"Source file path: {path}")
        Trace.WriteLine(sprintf $"Source line number: {line}")

Keterangan

Atribut Info Pemanggil hanya dapat diterapkan ke parameter opsional. Atribut Info Pemanggil menyebabkan pengompilasi menulis nilai yang tepat untuk setiap parameter opsional yang didekorasi dengan atribut Info Pemanggil.

Nilai Info Pemanggil dipancarkan sebagai harfiah ke Bahasa Perantara (IL) pada waktu kompilasi. Tidak seperti hasil dari properti StackTrace untuk pengecualian, hasilnya tidak terpengaruh oleh kebingungan.

Anda dapat secara eksplisit memberikan argumen opsional untuk mengontrol informasi pemanggil atau untuk menyembunyikan informasi pemanggil.

Nama anggota

Anda dapat menggunakan atribut CallerMemberName untuk menghindari penentuan nama anggota sebagai argumen String untuk metode yang dipanggil. Dengan menggunakan teknik ini, Anda menghindari masalah bahwa Mengganti Nama Refaktor tidak akan mengubah nilai String. Keuntungan ini sangat berguna untuk tugas-tugas berikut:

  • Menggunakan rutinitas pelacakan dan diagnostik.
  • Menerapkan antarmuka INotifyPropertyChanged saat mengikat data. Antarmuka ini memungkinkan properti objek untuk memberi tahu kontrol terikat bahwa properti telah berubah, sehingga kontrol dapat menampilkan informasi yang diperbarui. Tanpa atribut CallerMemberName, Anda harus menentukan nama properti sebagai harfiah.

Diagram berikut menunjukkan nama anggota yang ditampilkan saat Anda menggunakan atribut CallerMemberName.

Panggilan terjadi di dalam Hasil nama anggota
Metode, properti, atau peristiwa Nama metode, properti, atau peristiwa asal panggilan.
Konstruktor String ".ctor"
Konstruktor statis String ".cctor"
Destruktor String "Finalize"
Operator atau konversi yang ditentukan pengguna Nama yang dibuat untuk anggota, misalnya, "op_Addition".
Konstruktor atribut Nama anggota yang atributnya diterapkan. Jika atributnya adalah elemen apa pun di dalam anggota (seperti parameter, nilai pengembalian, atau parameter berjenis generik), hasil ini adalah nama anggota yang terkait dengan elemen itu.
Tida berisi anggota (misalnya, tingkat rakitan atau atribut yang diterapkan ke jenis) Nilai default parameter opsional.

Lihat juga