Réflexion C # et obtention de propriétés

J’ai la structure de classe fictive suivante et j’essaie de savoir comment obtenir les propriétés de chaque instance de la classe People dans PeopleList. Je sais comment obtenir les propriétés à partir d’une seule instance de People, mais je ne sais pas comment le récupérer à partir de PeopleList. Je suis sûr que c’est très simple, mais quelqu’un peut-il me diriger dans la bonne direction?

public class Example { public class People { private ssortingng _name; public ssortingng Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } public People() { } public People(ssortingng name, int age) { this._name = name; this._age = age; } } public class PeopleList : List { public static void DoStuff() { PeopleList newList = new PeopleList(); // Do some stuff newList.Add(new People("Tim", 35)); } } } 

Vous n’êtes toujours pas sûr à 100% de ce que vous voulez, mais ce petit morceau de code (non testé) pourrait vous mettre sur la bonne voie (ou au moins aider à clarifier ce que vous voulez).

 void ReportValue(Ssortingng propName, Object propValue); void ReadList(List list) { var props = typeof(T).GetProperties(); foreach(T item in list) { foreach(var prop in props) { ReportValue(prop.Name, prop.GetValue(item)); } } } 

c # devrait être capable de comprendre que ‘PeopleList’ hérite de ‘List’ et le gère correctement, mais si vous avez besoin de ‘PeopleList’ comme type générique, alors cela devrait fonctionner:

 void ReadList(T list) where T : System.Collections.IList { foreach (Object item in list) { var props = item.GetType().GetProperties(); foreach (var prop in props) { ReportValue(prop.Name, prop.GetValue(item, null)); } } } 

Notez que cela traitera également les propriétés des types dérivés dans la liste.