>If we use GetTypes(), a derived class can always filter away the non-public types. On the other hand, if we use GetExportedTypes(), there's no easy way to get the non-public types back.

@ploeh 
The problem as you mantioned above affects other cases in the same way - such as `Type.GetConstructors()`, `Type.GetFields()` and so on.

Do we need to introduce a parameter of the `Boolean` type or a new `enum` type to a `RefelctionVisitor<T>` constructor? If something like a Boolean parameter `onlyPublicMembers` is passed, we can filter selectively for all the cases - `GetTypes()`, `GetConstructors()`, `GetFields()` and so on.