Rumah >pembangunan bahagian belakang >C++ >Bolehkah Parameter Atribut Ditukar Secara Dinamik pada Masa Jalan?

Bolehkah Parameter Atribut Ditukar Secara Dinamik pada Masa Jalan?

Susan Sarandon
Susan Sarandonasal
2025-01-03 13:49:44713semak imbas

Can Attribute Parameters Be Dynamically Changed at Runtime?

Menukar Parameter Atribut Secara Dinamik

Tidak jelas dengan serta-merta sama ada anda boleh mengubah suai parameter atribut semasa masa jalan. Sebagai contoh, pertimbangkan kelas berikut yang dibekalkan oleh vendor pihak ketiga:

public class UserInfo
{
    [Category("change me!")]
    public int Age
    {
        get;
        set;
    }
    [Category("change me!")]
    public string Name
    {
        get;
        set;
    }
}

Anda menyedari perihalan kategori yang diberikan adalah tidak tepat dan ingin mengubah suainya tanpa mengubah kod asal. Bagaimanakah ini boleh dicapai?

Mengubah suai Kejadian Atribut Secara Dinamik

Ternyata anda memang boleh mengubah suai nilai tika atribut pada masa jalan. Contoh atribut ialah objek biasa, membenarkan manipulasi tanpa had. Langkah berikut menunjukkan cara:

  1. Dapatkan kejadian atribut daripada jenis:

    ASCII[] attrs1=(ASCII[])
     typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
  2. Ubah suai pembolehubah awam bagi atribut yang diambil:

    attrs1[0].MyData="A New String";
  3. Tunjukkan yang diubah suai nilai:

    MessageBox.Show(attrs1[0].MyData);
  4. Buat contoh atribut baharu untuk mengesahkan nilai asal tidak berubah:

    ASCII[] attrs3=(ASCII[])
     typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
     MessageBox.Show(attrs3[0].MyData);

Ini menunjukkan keupayaan untuk laraskan parameter atribut secara dinamik pada masa jalan.

Atas ialah kandungan terperinci Bolehkah Parameter Atribut Ditukar Secara Dinamik pada Masa Jalan?. 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