When using reflection to get at properties, How can I limit my search to just the subclass I'm interested in?

StackOverflow https://stackoverflow.com/questions/1294299

Question

After successfully getting a list of specific types out of an assembly using reflection, I now want to get at the public properties of each of those.

Each of these types derives from at least one base class.

I notice when I get properties on a type that I get properties from the base classes as well.

I need a way to filter out base class properties and only get back the properties for the type that I am calling get properties on.

I reckon it would be similar to how I'm only getting sub classes of a base type, excluding the base type, from a given base type.

Assembly.GetAssembly(baseType).GetTypes().Where(type => type.IsSubclassOf(baseType)).ToList()
Was it helpful?

Solution

Use BindingFlags.DeclaredOnly in your call to Type.GetProperties:

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
                                    BindingFlags.Public |
                                    BindingFlags.Instance);

OTHER TIPS

use the binding flag BindingFlags.DeclaredOnly in the GetProperties method

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top