Comment obtenir la liste des proprietes d'une classe ?

Comment obtenir la liste des proprietes d’une classe ?

Par reflexion ; pour une instance :

obj.GetType().GetProperties();

pour un type :

typeof(Foo).GetProperties();

par exemple :

class Foo {
    public int A {get;set;}
    public string B {get;set;}
}
...
Foo foo = new Foo {A = 1, B = "abc"};
foreach(var prop in foo.GetType().GetProperties()) {
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(foo, null));
}

Suite aux retours…

  • Pour obtenir la valeur des proprietes statiques, passez null comme premier argument a GetValue

  • Pour examiner les proprietes non publiques, utilisez (par exemple) GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) (qui retourne toutes les proprietes d’instance publiques/privees).