Rumah >pembangunan bahagian belakang >C++ >Bolehkah Reflection Mengubah Nilai Harta C# Diberikan Namanya?

Bolehkah Reflection Mengubah Nilai Harta C# Diberikan Namanya?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 17:31:39204semak imbas

Can Reflection Change a C# Property's Value Given its Name?

Menetapkan Nilai Harta Menggunakan Refleksi

Soalan:

Adakah layak menggunakan pantulan untuk mengubah nilai hartanah dalam C# , memandangkan nama harta itu ialah diketahui?

Jawapan:

Semestinya, refleksi membolehkan kefungsian ini. Begini cara untuk mencapainya:

  1. Ambil Harta: Gunakan kaedah Type.GetProperty untuk mendapatkan harta sasaran. Anda mungkin perlu menentukan bendera pengikatan tambahan untuk memastikan kebolehaksesan.
  2. Tetapkan Nilai: Guna kaedah SetValue pada sifat yang diambil. Berikut ialah contoh kod untuk menggambarkan:
using System;

class Person
{
    public string Name { get; set; }
}

class Test
{
    static void Main(string[] arg)
    {
        Person p = new Person();
        var property = typeof(Person).GetProperty("Name");
        property.SetValue(p, "Jon", null);
        Console.WriteLine(p.Name); // Jon
    }
}

Nota: Jika harta sasaran bukan awam, anda perlu menggunakan BindingFlags.NonPublic | BindingFlags.Instance semasa mengambil harta itu.

Atas ialah kandungan terperinci Bolehkah Reflection Mengubah Nilai Harta C# Diberikan Namanya?. 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