If I use
sometype.GetProperties();
I get all of the properties from the type and it\'s parent. However I only want to retrieve the proper
To summarize:
if you use the GetProperties() overload (without parameters), you will get all public properties.
on the other hand, if you use the GetProperties(BindingFlags) overload (the one which accepts a BindingFlags parameter), then you need to specify a bitwise OR of at least one from each group of the following flags:
BindingFlags.Instance / BindingFlags.Static (instance vs static properties),BindingFlags.Public / BindingFlags.NonPublic (public vs non-public properties).For example, to get public static properties, you will need to call GetProperties(BindingFlags.Public | BindingFlags.Static) in order to get results. Calling only GetProperties(BindingFlags.Public) or GetProperties(BindingFlags.Static) won't return any results.
Note also that specifying BindingFlags.Default will return an empty array.
Full details can be found in MSDN documentation for GetProperties(BindingFlags):
The following BindingFlags filter flags can be used to define which nested types to include in the search:
- You must specify either
BindingFlags.InstanceorBindingFlags.Staticin order to get a return.- Specify
BindingFlags.Publicto include public properties in the search.- Specify
BindingFlags.NonPublicto include non-public methods (that is, private, internal, and protected methods) in the search. Only protected and internal methods on base classes are returned; private methods on base classes are not returned.- Specify
BindingFlags.FlattenHierarchyto include public and protected static members up the hierarchy; private static members in inherited classes are not included.The following BindingFlags modifier flags can be used to change how the search works:
BindingFlags.DeclaredOnlyto search only the properties declared on the Type, not properties that were simply inherited.