Obtenir les propriétés privées / Méthode de la classe de base avec reflection

Avec Type.GetProperties() vous pouvez récupérer toutes les propriétés de votre classe actuelle et les propriétés public de la classe de base. Est-il possible d’obtenir aussi les propriétés private de la classe de base?

Merci

 class Base { private ssortingng Foo { get; set; } } class Sub : Base { private ssortingng Bar { get; set; } } Sub s = new Sub(); PropertyInfo[] pinfos = s.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); foreach (PropertyInfo p in pinfos) { Console.WriteLine(p.Name); } Console.ReadKey(); 

Ceci imprimera seulement “Bar” parce que “Foo” est dans la classe de base et privé.

Pour obtenir toutes les propriétés (public + privé / protégé / interne, statique + instance) d’un Type someType donné Type someType (peut-être en utilisant GetType() pour obtenir someType ):

 PropertyInfo[] props = someType.BaseType.GetProperties( BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static) 

Parcourez les types de base (type = type.BaseType) jusqu’à ce que type.BaseType soit null.

 MethodInfo mI = null; Type baseType = someObject.GetType(); while (mI == null) { mI = baseType.GetMethod("SomePrivateMethod", BindingFlags.NonPublic | BindingFlags.Instance); baseType = baseType.BaseType; if (baseType == null) break; } mI.Invoke(someObject, new object[] {});