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 :
Récupérer les instances d'attribut du type :
ASCII[] attrs1=(ASCII[]) typeof(MyClass).GetCustomAttributes(typeof(ASCII), false);
Modifier la variable publique de l'attribut récupéré :
attrs1[0].MyData="A New String";
Afficher le modifié value :
MessageBox.Show(attrs1[0].MyData);
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!