Heim > Backend-Entwicklung > C++ > Wie kann ich Attributparameterwerte zur Laufzeit in C# dynamisch ändern?

Wie kann ich Attributparameterwerte zur Laufzeit in C# dynamisch ändern?

Linda Hamilton
Freigeben: 2024-12-30 01:27:18
Original
793 Leute haben es durchsucht

How Can I Dynamically Change Attribute Parameter Values at Runtime in C#?

Dynamische Änderung von Attributparametern

In bestimmten Szenarien kann es notwendig sein, Attributparameter während der Laufzeit anzupassen, um genauere oder individuellere Informationen bereitzustellen . Betrachten Sie das folgende Beispiel:

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

Angenommen, Sie haben eine Drittanbieterklasse wie die obige und können deren Code nicht ändern. Sie entdecken jedoch, dass das „Ändere mich!“ Der Kategoriename ist ungenau und Sie möchten ihn dynamisch aktualisieren.

Glücklicherweise können Sie Attributinstanzwerte zur Laufzeit ändern, indem Sie direkt über Reflektion auf die Attributobjekte zugreifen.

So geht's:

  1. Rufen Sie das Attribut ab Instanzen:
ASCII[] attrs1 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
Nach dem Login kopieren
  1. Ändern Sie die öffentliche Variable der Attributinstanz:
attrs1[0].MyData = "A New String";
Nach dem Login kopieren
  1. Zeigen Sie den geänderten Wert an:
MessageBox.Show(attrs1[0].MyData);
Nach dem Login kopieren
  1. Erstellen Sie eine weitere Instanz, um die Änderung zu bestätigen lokal:
ASCII[] attrs3 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
MessageBox.Show(attrs3[0].MyData);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Attributparameterwerte zur Laufzeit in C# dynamisch ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage