Well it might depend on the object. and how you got your type descriptor. E.g. it could be a custom descriptor which could return what ever. If that's the case you can give the GetTypedescriptor method information of not to use custom typedescriptors.
(sry for not posting the actual code but I don't have an IDE available and can't remember the exact syntax).
A different approach would be to ue a PropertyInfo instead of a propertyDescriptor (if the rest of the code works with a System.Reflection.PropertyInfo).
You can get the PropertyInfo of the Property Length for the stype string like this
typeof(string).GetProperty("Length");
or if it's an type unknown at compile time like this:
obj.GetType().GetProperty("Length");
if you need to loop through all properties call GetProperties instead.
But all that PropertyInfo relies on my guess that you'd be able to use PropertyInfo instead of PropertyDescriptor