Custom attribute et reflection
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) :
Code:
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;
}
}
} |
Jusqu'a present j'appliquais le CustomAttribute a mon assembly comme ceci :
Code:
[assembly: CustomAttribute("value")]
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.
Recuperation du CustomAttribute et du membre prive myValue:
Code:
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"); |
Cependant, quand la librairie qui se base sur cet attribut va recuperer la valeur MyValue, c'est la valeur "value" qui lui est retournee.
Si vous un avis sur le probleme, je suis toute ouie.