Assuming the following hypothetical inheritance hierarchy:
public interface IA
{
int ID { get; set; }
}
public interface IB : IA
{
string Name { get; set; }
}
Using reflection and making the following call:
typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance)
will only yield the properties of interface IB, which is “Name“.
If we were to do a similar test on the following code,
public abstract class A
{
public int ID { get; set; }
}
public class B : A
{
public string Name { get; set; }
}
the call typeof(B).GetProperties(BindingFlags.Public | BindingFlags.Instance) will return an array of PropertyInfo objects for “ID” and “Name“.
Is there an easy way to find all the properties in the inheritance hierarchy for interfaces as in the first example?
I’ve tweaked @Marc Gravel’s example code into a useful extension method encapsulates both classes and interfaces. It also add’s the interface properties first which I believe is the expected behaviour.