Obtenir et définir la valeur du champ en passant le nom de
J'ai un champ dans une classe avec un nom aléatoire comme:
class Foo {
public string a2de = "e2"
}
J'ai le nom de ce champ dans une autre variable comme:
string vari = "a2de"
Puis-je obtenir ou de définir la valeur du champ a2de
par l'aide de la valeur de vari
?
comme:
getvar(vari)
ou
setvar(vari) = "e3"
essayez de réflexion pour réaliser cela.
Je reçois un sentiment de confusion de la terminologie un peu (par exemple; ce qui est une variable dans une autre variable?) Veuillez fournir une meilleure exemple de code montrant ce que vous essayez de faire.
Je reçois un sentiment de confusion de la terminologie un peu (par exemple; ce qui est une variable dans une autre variable?) Veuillez fournir une meilleure exemple de code montrant ce que vous essayez de faire.
OriginalL'auteur Luca Romagnoli | 2011-03-07
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser la réflexion.
Pour obtenir la valeur d'une propriété sur
targetObject
:Pour obtenir la valeur d'un champ c'est la même chose:
Si la propriété/domaine n'est pas publique ou qu'elle a été héritée d'une classe de base, vous aurez besoin de fournir explicite
BindingFlags
àGetProperty
ouGetField
.OriginalL'auteur Jon
Vous peut potentiellement le faire avec réflexion (par exemple
Type.GetField
etc) - mais qui ne devrait généralement être un dernier recours.Avez-vous songé à utiliser un
Dictionary<string, string>
et à l'aide de la variable "nom" comme la clé à la place?Vrai. Ces jours, je pense que nous sommes ont insisté sur plus de détails dans la question de départ.
Pas de problème. J'ai seulement terminé ici, car un autre utilisateur visé à votre réponse ici comme faisant autorité, preuve que les variables locales peuvent être modifiés par la réflexion. stackoverflow.com/q/41867476/158285
OriginalL'auteur Jon Skeet
Vous auriez à utiliser la Réflexion pour accéder à la variable par son nom. Comme ceci:
+1
Merci pour le partage! Sauvé mon cul aujourd'hui 🙂OriginalL'auteur Saeb Amini