Obtenir la valeur d'un objet spécifique de la propriété en C# sans la connaissance de la classe derrière
J'ai un objet (.NETTE) de type "objet". Je ne connais pas le "vrai type (classe)" derrière lors de l'exécution , mais je sais, que l'objet a une propriété "nom de la chaîne de". Comment puis-je retrive la valeur de "nom"? Est-ce possible?
quelque chose comme ceci:
object item = AnyFunction(....);
string value = item.name;
GetValue(point, "PropertyName")
Vous pouvez utiliser
Avez-vous le contrôle de la AnyFunction? Pourquoi ne pas utiliser une interface ici? Et ont AnyFunction retour IHasName ou quelque chose.
Vous pouvez utiliser
System.Reflection
pour obtenir le type d'objet, puis créer une nouvelle variable de ce type, faisant égal à l'élément, puis accéder à la propriété - switchonthecode.com/tutorials/...Avez-vous le contrôle de la AnyFunction? Pourquoi ne pas utiliser une interface ici? Et ont AnyFunction retour IHasName ou quelque chose.
OriginalL'auteur uhu | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
Utiliser la réflexion
OriginalL'auteur Waqar
Vous pouvez le faire en utilisant
dynamique
au lieu deobject
:lien ajouté
ce doit être la accepté de répondre à
OriginalL'auteur Eren Ersönmez
Réflexion peut vous aider.
OriginalL'auteur Maarten
La réflexion et la dynamique de la valeur d'accès sont corrects des solutions à cette question, mais sont assez lent.
Si vous voulez quelque chose de plus rapide, alors vous pouvez créer des dynamiques de la méthode à l'aide d'expressions:
Cette méthode est plus rapide si vous le cache créé fonctions. Par exemple, dans le dictionnaire, où serait le type réel de l'objet en supposant que le nom de la propriété est de ne pas changer ou d'une combinaison de type et nom de la propriété.
OriginalL'auteur Rafal
Simplement essayer ce pour toutes les propriétés d'un objet,
REMARQUE: Fonctions.convertNullableToString() est fonction personnalisée à l'aide pour convertir la valeur NULL dans la chaîne.vide.
OriginalL'auteur Haseeb Ahmed
Dans certains cas, la Réflexion ne fonctionne pas correctement.
Vous pouvez utiliser les dictionnaires, si tous les types d'éléments sont les mêmes.
Par exemple, si vos articles sont des chaînes de caractères :
Ou ints:
OriginalL'auteur Dugh