Heim >Backend-Entwicklung >C++ >Können Attributparameter zur Laufzeit dynamisch geändert werden?

Können Attributparameter zur Laufzeit dynamisch geändert werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 13:49:44713Durchsuche

Can Attribute Parameters Be Dynamically Changed at Runtime?

Attributparameter dynamisch ändern

Es ist nicht sofort ersichtlich, ob Sie Attributparameter zur Laufzeit ändern können. Betrachten Sie beispielsweise die folgende Klasse eines Drittanbieters:

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

Sie stellen fest, dass die bereitgestellten Kategoriebeschreibungen ungenau sind und möchten sie ändern, ohne den Originalcode zu ändern. Wie kann dies erreicht werden?

Attributinstanzen dynamisch ändern

Es stellt sich heraus, dass Sie Attributinstanzwerte tatsächlich zur Laufzeit ändern können. Attributinstanzen sind gewöhnliche Objekte, die eine uneingeschränkte Manipulation ermöglichen. Die folgenden Schritte veranschaulichen, wie:

  1. Attributinstanzen vom Typ abrufen:

    ASCII[] attrs1=(ASCII[])
     typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
  2. Die öffentliche Variable des abgerufenen Attributs ändern:

    attrs1[0].MyData="A New String";
  3. Geändert anzeigen Wert:

    MessageBox.Show(attrs1[0].MyData);
  4. Erstellen Sie eine neue Attributinstanz, um zu überprüfen, ob der ursprüngliche Wert unverändert ist:

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

Dies zeigt die Fähigkeit dazu Attributparameter zur Laufzeit dynamisch anpassen.

Das obige ist der detaillierte Inhalt vonKönnen Attributparameter zur Laufzeit dynamisch geändert werden?. 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