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

2

5

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()
Bangup answered 18/8, 2009 at 14:34 Comment(0)
H
11

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

var properties = Type.GetProperties(BindingFlags.DeclaredOnly | 
                                    BindingFlags.Public |
                                    BindingFlags.Instance);
Hitherto answered 18/8, 2009 at 14:36 Comment(3)
@towps- see here to read more about it: msdn.microsoft.com/en-us/library/kyaxdd3x.aspxBeale
Thanks folks! I wasn't sure why only attaching the DeclaredOnly flag wasn't getting me anything. Seems you require public and instance? DeclareOnly and Public still didn't get me anything.Bangup
Yes, you've got to specify Public or NonPublic, and Static or Instance (or combinations).Hitherto
W
2

use the binding flag BindingFlags.DeclaredOnly in the GetProperties method

Wagon answered 18/8, 2009 at 14:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.