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.