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
Linda HamiltonOriginal
2024-12-30 01:27:18790Durchsuche

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;
    }
}

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);
  1. Ändern Sie die öffentliche Variable der Attributinstanz:
attrs1[0].MyData = "A New String";
  1. Zeigen Sie den geänderten Wert an:
MessageBox.Show(attrs1[0].MyData);
  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);

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!

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