Maison >développement back-end >C++ >Comment puis-je modifier dynamiquement les valeurs des paramètres d'attribut lors de l'exécution en C# ?

Comment puis-je modifier dynamiquement les valeurs des paramètres d'attribut lors de l'exécution en C# ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-30 01:27:18802parcourir

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

Modification dynamique des paramètres d'attribut

Dans certains scénarios, il peut être nécessaire d'ajuster les paramètres d'attribut pendant l'exécution pour fournir des informations plus précises ou personnalisées . Prenons l'exemple suivant :

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

Disons que vous disposez d'une classe tierce comme celle ci-dessus et que vous ne pouvez pas modifier son code. Cependant, vous découvrez que le « changez-moi ! » Le nom de la catégorie est inexact et souhaite le mettre à jour dynamiquement.

Heureusement, vous pouvez modifier les valeurs des instances d'attribut au moment de l'exécution en accédant aux objets d'attribut directement par réflexion.

Voici comment :

  1. Récupérer les instances d'attribut :
ASCII[] attrs1 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
  1. Modifier la variable publique de l'instance d'attribut :
attrs1[0].MyData = "A New String";
  1. Afficher la valeur modifiée :
MessageBox.Show(attrs1[0].MyData);
  1. Créer une autre instance pour confirmer la modification est local :
ASCII[] attrs3 = (ASCII[])typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
MessageBox.Show(attrs3[0].MyData);

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