There is an unsaved comment in progress. You will lose your changes if you continue. Are you sure you want to reopen the work item?
The exception obtained is a System.TargetException: "Object does not match target type".
The problem lies in the CachedReflectionPropertyGetter class. It's GetValue method receives a property name and an instance to get the property from. It will evaluate the supplied instance and see if it is a System.Type instance, in which case it will interpret that the property to call is a static property. Definitely, the GetValue method must, somehow, receive the System.Type of a class for which a static member is called in order to locate that member (lacking an instance of the class since we're calling a static member).
There's an ambiguity in this interpretation: GetValue can't tell if a static member of a class is called or whether we are operating on a System.Type instance. The design must probably be revised in order to fix this ambiguity. The information corresponding to whether we are operating on a class or an instance must be supplied by the calling code.