L'obtention de la collecte de tous les membres d'une classe
Je veux obtenir la collection de tous les membres qui sont présents dans une classe. Comment dois-je faire? Je suis l'aide de la suite, mais il me donne beaucoup plus des noms, ainsi que les membres.
Type obj = objContactField.GetType();
MemberInfo[] objMember = obj.GetMembers();
String name = objMember[5].Name.ToString();
Voulez-vous dire que vous voulez toutes les méthodes? Les membres comprennent des choses comme les propriétés et les champs.
Lorsque vous écrivez une question, il est aperçu champ ci-dessous où vous pouvez voir si les choses sont correctement formatés, comme le code etc. J'ai vu que tu avais essayé une mise en forme, mais en regardant l'aperçu n'apparaît pas comme un code.
Sanchaita, s'il vous plaît accepter cette réponse qui fonctionne le mieux pour vous récompenser le temps la personne mise en répondre. Merci!!!! 🙂
Lorsque vous écrivez une question, il est aperçu champ ci-dessous où vous pouvez voir si les choses sont correctement formatés, comme le code etc. J'ai vu que tu avais essayé une mise en forme, mais en regardant l'aperçu n'apparaît pas comme un code.
Sanchaita, s'il vous plaît accepter cette réponse qui fonctionne le mieux pour vous récompenser le temps la personne mise en répondre. Merci!!!! 🙂
OriginalL'auteur Sanchaita Chakraborty | 2011-07-21
Vous devez vous connecter pour publier un commentaire.
Si vous voulez une collection de toutes les propriétés et valeurs-là, ce faire :
Notez que vous aurez besoin d'ajouter
using System.Collections.Generic;
etusing System.Reflection;
pour l'exemple de travailler.J'ai fait un petit dotnetfiddle pour illustrer l'utilisation: dotnetfiddle.net/qcWcGA
Cela n'aurait pas de méthodes de droit? ou faut-il?
Cela fonctionne pour les propriétés, mais il ne fonctionne pas pour les membres ordinaires, car MemberInfo ne dispose pas d'une méthode GetValue.
OriginalL'auteur dknaack
De msdn, les membres d'une classe comprennent:
Champs
Constantes (livré sous Champs)
Propriétés
Méthodes
Les événements
Les opérateurs
Les indexeurs (livré sous Propriétés)
Les constructeurs
Les destructeurs
Les Types Imbriqués
Lorsque vous ne
GetMembers
sur une classe, vous bénéficiez de tous ces (y compris statique celles définies sur la classe comme statique/const/opérateur, de ne pas mentionner l'instance) de cette classe, et les membres de l'instance des classes dont il a hérité (pas statique/const/opérateur de classes de base), mais de ne pas dupliquer les méthodes de remplacement/propriétés.À filtrer, vous avez
GetFields
,GetProperties
,GetMethods
, et pour plus de flexibilité, il estFindMembers
OriginalL'auteur nawfal
Eh bien, ça dépend un peu de ce que vous obtenez. Par exemple:
Retourne
Qui est ce que j'attendais, rappelez-vous, juste parce que votre classe hérite de quelque part, il y a d'autres choses fourni par défaut.
Int32 GetHashCode() Void .ctor() j'ai obtenu ces champs avec les champs appropriés
Mais c'est exactement ce que vous devriez!
Une variante intéressante de ce problème: est-il possible d'obtenir la dernière seconde TestMe classe qui a été créé jusqu'à présent?
Vous voulez dire que vous voulez dire ce que les instances de testme ont été faites et l'avant-dernier?
OriginalL'auteur BugFinder
Le code est correct. Sont les noms que vous obtenez des membres qui sont hérités d'une classe de base?
2: Pas extra noms ne sont pas les membres hérités de la classe de base
Utiliser le
FindMembers
et filtrer uniquement les champs au lieu deGetMembers
.Et comment dois-je faire
Essayez de lire la documentation de
FindMembers
: msdn.microsoft.com/en-us/library/system.type.findmembers.aspxOriginalL'auteur Anders Abel
Linqpad Démo Programm
Pour le rendre facile à comprendre ce que le code de dknaack fait j'ai créé un linqpad programme de démonstration
OriginalL'auteur surfmuggle