Maison >développement back-end >C++ >Les paramètres d'attribut peuvent-ils être modifiés dynamiquement au moment de l'exécution ?

Les paramètres d'attribut peuvent-ils être modifiés dynamiquement au moment de l'exécution ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-03 13:49:44722parcourir

Can Attribute Parameters Be Dynamically Changed at Runtime?

Modification dynamique des paramètres d'attribut

Il n'est pas immédiatement évident si vous pouvez modifier les paramètres d'attribut pendant l'exécution. Par exemple, considérons la classe suivante fournie par un fournisseur tiers :

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

Vous réalisez que les descriptions de catégories fournies sont inexactes et souhaitez les modifier sans altérer le code d'origine. Comment y parvenir ?

Modification dynamique des instances d'attribut

Il s'avère que vous pouvez effectivement modifier les valeurs des instances d'attribut au moment de l'exécution. Les instances d'attribut sont des objets ordinaires, permettant une manipulation sans restriction. Les étapes suivantes montrent comment :

  1. Récupérer les instances d'attribut du type :

    ASCII[] attrs1=(ASCII[])
     typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
  2. Modifier la variable publique de l'attribut récupéré :

    attrs1[0].MyData="A New String";
  3. Afficher le modifié value :

    MessageBox.Show(attrs1[0].MyData);
  4. Créez une nouvelle instance d'attribut pour vérifier que la valeur d'origine est inchangée :

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

Cela démontre la capacité de ajuster dynamiquement les paramètres d'attribut au moment de l'exécution.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn