Distinguishing Object Properties

Say I want to iterate over all properties of an unknown Blueprint-only class and react to their types. I know I can distinguish boolean, numeric, struct and object properties, but strings technically are objects that do not derive from the UObject class.

Question: how do I distinguish String properties from other object properties?

The easiest I found to find all the property types supported by UE4 is to simply call UProperty::GetClass()->GetName() and print that. For the various strings, this yields:

  1. UStrProperty for FStrings
  2. UNameProperty for FNames
  3. UTextProperty for FTexts

There is also a UArrayProperty for TArrays, however I’m currently struggling to determine the exact template type of the array. TMap and TSet are not supported (as also stated somewhere in the documentation).