Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menggunakan refleksi untuk meneroka sifat kelas di C#?

Bagaimanakah saya boleh menggunakan refleksi untuk meneroka sifat kelas di C#?

Mary-Kate Olsen
Lepaskan: 2025-02-01 07:51:09
asal
535 orang telah melayarinya

How Can I Use Reflection to Explore Class Properties in C#?

memanfaatkan refleksi untuk mengakses sifat kelas C#

Pengaturcaraan berorientasikan objek sering memerlukan berinteraksi dengan contoh kelas dan sifat mereka. Refleksi menawarkan mekanisme yang kuat untuk mengkaji dan memanipulasi sifat -sifat ini secara dinamik. Panduan ini menunjukkan bagaimana untuk mendapatkan senarai sifat yang berkaitan dengan kelas.

Mendapatkan maklumat harta

API Refleksi NET memudahkan penerokaan harta. Dua kaedah utama mencapai ini:

  • : Obj.GetType().GetProperties() digunakan semasa bekerja dengan contoh kelas tertentu.
  • : typeof(ClassName).GetProperties() digunakan semasa bekerja secara langsung dengan jenis kelas.
kedua -dua kaedah menghasilkan pelbagai objek

, masing -masing mewakili satu harta kelas. PropertyInfo

Contoh praktikal

mari kita ilustrasikan dengan kelas sampel:

public class Foo
{
    public int A { get; set; }
    public string B { get; set; }
}
Salin selepas log masuk
coretan kod berikut mengambil semula dan memaparkan nilai semua sifat

contoh: Foo

Foo foo = new Foo { A = 1, B = "abc" };

foreach (var prop in foo.GetType().GetProperties())
{
    Console.WriteLine($"{prop.Name} = {prop.GetValue(foo)}");
}
Salin selepas log masuk

Nota penting:

    Mengakses sifat statik memerlukan lulus
  • sebagai hujah kedua untuk null. GetValue()
  • untuk memeriksa sifat peribadi atau dilindungi, gunakan
  • dengan bendera yang sesuai seperti GetProperties(BindingFlags). Ingatlah bahawa mengakses ahli bukan awam harus dilakukan dengan berhati-hati dan hanya apabila benar-benar diperlukan. BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan refleksi untuk meneroka sifat kelas di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan