I have an instance of System.Type that represents an interface, and I want to get a list of all the properties on that interface -- including those inherited from base inter
An answer of sorts is to be found in an annotation to the .NET framework version 3.5-specific MSDN page on GetProperties(BindingFlags bindingFlags) :
Passing BindingFlags.FlattenHierarchy to one of the Type.GetXXX methods, such as Type.GetMembers, will not return inherited interface members when you are querying on an interface type itself.
[...]
To get the inherited members, you need to query each implemented interface for its members.
Example code is also included. This comment was posted by a Microsoftie, so I would say you can trust it.
See here: GetProperties() to return all properties for an interface inheritance hierarchy
I don't think it's possible to get all members without doing what you suggested (i.e. getting all the implementing interfaces.)