Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get private Properties/Method of base-class with reflection

With Type.GetProperties() you can retrieve all properties of your current class and the public properties of the base-class. Is it somehow possible to get the private properties of the base-class too?

class Base {     private string Foo { get; set; } }  class Sub : Base {     private string 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(); 

This will only print "Bar" because "Foo" is in the base-class and private.

like image 761
Fabiano Avatar asked Feb 15 '10 16:02

Fabiano


1 Answers

To get all properties (public/private/protected/internal/static/instance) of a given Type someType, you must access the base class by using someType.BaseType.

Example:

PropertyInfo[] props = someType.BaseType.GetProperties(         BindingFlags.NonPublic | BindingFlags.Public         | BindingFlags.Instance | BindingFlags.Static) 
like image 87
Marc Gravell Avatar answered Oct 09 '22 08:10

Marc Gravell