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
Mary-Kate Olsenasal
2025-02-01 07:51:09538semak imbas

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:

<code class="language-csharp">public class Foo
{
    public int A { get; set; }
    public string B { get; set; }
}</code>
coretan kod berikut mengambil semula dan memaparkan nilai semua sifat

contoh: Foo

<code class="language-csharp">Foo foo = new Foo { A = 1, B = "abc" };

foreach (var prop in foo.GetType().GetProperties())
{
    Console.WriteLine($"{prop.Name} = {prop.GetValue(foo)}");
}</code>

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:
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