Bonjour,
Je cherche a remplacer la valeur d'un membre (prive) dans un custom attribute via Reflection, mais je bute sur un probleme de sauvegarde de la modification.
En gros, j'ai un custom attribute defini ainsi (je n'ai pas la main sur le source d'ou la modification au runtime) :
Jusqu'a present j'appliquais le CustomAttribute a mon assembly comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class CustomAttribute : Attribute { private string myValue; public CustomAttribute(string myValue) { this.myValue = myValue; } public string MyValue { get { return this.myValue; } } }
De cette valeur depend un tas de choses, mais je ne veux pas avoir "value" dans du code compile et souhaite le sortir dans le app.config.
Code : Sélectionner tout - Visualiser dans une fenêtre à part [assembly: CustomAttribute("value")]
Recuperation du CustomAttribute et du membre prive myValue:
Cependant, quand la librairie qui se base sur cet attribut va recuperer la valeur MyValue, c'est la valeur "value" qui lui est retournee.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /*Assembly currentAssembly initialise via Assembly.GetEntryAssembly*/ CustomAttribute attribute; object[] attributes = currentAssembly.GetCustomAttributes(typeof(CustomAttribute), false); if (attributes.Length == 1) { attribute = (CustomAttribute)attributes[0]; } typeof(CustomAttribute) .GetField("myValue", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(attribute, "differentValue");
Si vous un avis sur le probleme, je suis toute ouie.
Partager