1. If a TypeConverter exists that can convert to and from string, it is used.
2. Otherwise, the XmlSerializer is used.