Euh... vous vous compliquez la vie pour pas grand chose, quand même
En gros, si j'ai bien compris, ce que tu veux, c'est une méthode qui avec une paire (string, object) (le nom de la propriété et un objet), affecte à la propriété la valeur donnée ? A ce moment-là, le code donné par Paul Musso au début du thread est très bien.
(d'ailleurs, en C#, en n'utilise pas le mot "attribut" dans ce cas. Un attribut, en DotNet, c'est autre chose.)
Parce que ça sert à quoi, la réflexion, si la méthode qui l'utilise fait des tripotées de "else if" successifs ?
Donc :
1 2 3 4 5 6 7 8 9
| void AffecteValeur(object objet, string nomPropriété, object valeur)
{
Type type = typeof(objet);
PropertyInfo prop = type.GetProperty(nomPropriété);
prop.SetValue(objet, valeur, null);
}
AffecteValeur(bidule, "PropriétéDeTypeEntier", 5);
AffecteValeur(bidule, "PropriétéDeTypeChaine", "Bob"); |
La réflexion est très puissante. Mais trop. Et les scénarios dans lesquelles elle s'avère vraiment utile ne sont pas si nombreux.

Partager