Bagikan melalui


Beri tahu debugger jenis apa yang akan ditampilkan menggunakan Atribut DebuggerTypeProxy (C#, Visual Basic, C++/CLI)

DebuggerTypeProxyAttribute menentukan proksi, atau stand-in, untuk jenis dan mengubah cara jenis ditampilkan di jendela debugger. Saat Anda melihat variabel yang memiliki proksi, proksi menggantikan jenis aslinya dalam tampilan. Jendela variabel debugger hanya menampilkan anggota publik dari jenis proksi. Anggota privat tidak ditampilkan.

Atribut ini dapat diterapkan ke:

  • Struktur
  • Kelas
  • Rakitan

Catatan

Untuk kode asli, atribut ini hanya didukung dalam kode C++/CLI.

Kelas proksi jenis harus memiliki konstruktor yang mengambil argumen dari jenis yang akan diganti oleh proksi. Debugger membuat instans baru dari kelas proksi jenis setiap kali perlu menampilkan variabel jenis target. Ini dapat memiliki implikasi performa. Akibatnya, Anda tidak boleh melakukan pekerjaan lagi di konstruktor daripada yang benar-benar diperlukan.

Untuk meminimalkan penalti performa, evaluator ekspresi tidak memeriksa atribut pada proksi tampilan jenis kecuali jenis diperluas oleh pengguna yang mengeklik simbol + di jendela debugger atau dengan menggunakan DebuggerBrowsableAttribute. Oleh karena itu, Anda tidak boleh menempatkan atribut pada jenis tampilan itu sendiri. Atribut dapat dan harus digunakan dalam isi jenis tampilan.

Ada baiknya untuk proksi jenis menjadi kelas berlapis privat dalam kelas yang ditargetkan atribut. Ini memungkinkannya untuk mengakses anggota internal dengan mudah.

DebuggerTypeProxyAttribute dapat diwarisi, jadi jika proksi jenis ditentukan pada kelas dasar, itu akan berlaku untuk kelas turunan apa pun, kecuali kelas turunan tersebut menentukan proksi jenisnya sendiri.

Jika DebuggerTypeProxyAttribute digunakan pada tingkat rakitan, parameter Target menentukan jenis yang akan diganti oleh proksi.

Untuk contoh cara menggunakan atribut ini bersama dengan DebuggerDisplayAttribute dan DebuggerTypeProxyAttribute, lihat Menggunakan Atribut DebuggerDisplay.

Penting

Jika kotak centang Tampilkan struktur objek mentah di jendela variabel dipilih di kotak dialog Alat/Opsi/Penelusuran Kesalahan, atribut DebuggerDisplay akan diabaikan.

Menggunakan Generik dengan DebuggerTypeProxy

Dukungan untuk generik terbatas. Untuk C#, DebuggerTypeProxy hanya mendukung jenis terbuka. Jenis terbuka, juga disebut jenis yang tidak dibangun, adalah jenis generik yang belum dibuat dengan argumen untuk parameter jenisnya. Jenis tertutup, juga disebut jenis yang dibangun, tidak didukung.

Sintaksis untuk jenis terbuka terlihat seperti ini:

Namespace.TypeName<,>

Jika Anda menggunakan jenis generik sebagai target di DebuggerTypeProxy, Anda harus menggunakan sintaksis ini. Mekanisme DebuggerTypeProxy menyimpulkan parameter jenis untuk Anda.

Untuk informasi selengkapnya tentang jenis terbuka dan tertutup dalam C# lihat Spesifikasi Bahasa C#, bagian 20.5.2 Jenis terbuka dan tertutup.

Visual Basic tidak memiliki sintaksis jenis terbuka, sehingga Anda tidak dapat melakukan hal yang sama dalam Visual Basic. Sebagai gantinya, Anda harus menggunakan representasi string dari nama jenis terbuka.

"Namespace.TypeName'2"