Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan menggunakan atribut Informasi Pemanggil, Anda dapat memperoleh informasi tentang pemanggil suatu metode. Anda dapat memperoleh jalur file kode sumber, nomor baris dalam kode sumber, dan nama anggota pemanggil. Informasi ini berguna untuk melacak, men-debug, 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 Penelepon yang ditentukan dalam namespace System.Runtime.CompilerServices :
| Karakteristik | Deskripsi | Tipe |
|---|---|---|
| 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 | Metode atau nama properti pemanggil. Lihat bagian Nama Anggota nanti dalam topik ini. | String |
Contoh
Contoh berikut menunjukkan bagaimana Anda dapat menggunakan atribut ini untuk melacak penelepon.
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}")
Komentar
Atribut Info Penelepon hanya dapat diterapkan ke parameter opsional. Atribut Info Penelepon menyebabkan pengkompilasi menulis nilai yang tepat untuk setiap parameter opsional yang dihiasi dengan atribut Info Penelepon.
Nilai Info Penelepon dipancarkan sebagai harfiah ke dalam Bahasa Perantara (IL) pada waktu kompilasi. Tidak seperti hasil properti StackTrace untuk pengecualian, hasilnya tidak terpengaruh oleh obfuscation.
Anda dapat secara eksplisit menyediakan argumen opsional untuk mengontrol informasi penelepon atau menyembunyikan informasi penelepon.
Nama anggota
Anda dapat menggunakan atribut CallerMemberName untuk menghindari penentuan nama anggota sebagai argumen String ke metode yang dipanggil. Dengan menggunakan teknik ini, Anda menghindari masalah bahwa Pemfaktoran Ulang Nama tidak mengubah String nilai. Manfaat ini sangat berguna untuk tugas-tugas berikut:
- Menggunakan prosedur 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.
CallerMemberNameTanpa atribut , Anda harus menentukan nama properti sebagai harfiah.
Bagan berikut menunjukkan nama anggota yang dikembalikan saat Anda menggunakan atribut CallerMemberName.
| Panggilan berlangsung dalam | Hasil nama anggota |
|---|---|
| Metode, properti, atau peristiwa | Nama metode, properti, atau peristiwa tempat panggilan berasal. |
| Pembangun | String ".ctor" |
| Konstruktor statis | String ".cctor" |
| Destruktor | String "Finalisasi" |
| Operator atau konversi yang ditentukan pengguna | Nama yang dihasilkan untuk anggota, misalnya, "op_Addition". |
| Konstruktor atribut | Nama anggota tempat atribut diterapkan. Jika atribut adalah elemen apa pun dalam anggota (seperti parameter, nilai pengembalian, atau parameter jenis generik), hasil ini adalah nama anggota yang terkait dengan elemen tersebut. |
| Tidak berisi anggota (misalnya, tingkat majelis atau atribut yang diterapkan pada tipe) | Nilai default dari parameter opsional. |