I've done some checking, this is the code that causes the exception:
public static bool TryConvert(object initialValue, CultureInfo culture, Type targetType, out object convertedValue)
{
return MiscellaneousUtils.TryAction<object>(delegate { return Convert(initialValue, culture, targetType); }, out convertedValue);
}
The actual call to the delegate that does the Convert work cannot find a convertor for this type. Investigating the cause for this, as the serializer is able to serialize and deserialize other types correctly.
EDIT:
This does not work, since the XNA Rectangle type is defined as:
[Serializable]
[TypeConverter(typeof(RectangleConverter))]
public struct Rectangle : IEquatable<Rectangle>
Json.NET retrieves TypeConverter type, and calls this method on it:
TypeConverter fromConverter = GetConverter(targetType);
if (fromConverter != null && fromConverter.CanConvertFrom(initialType))
{
// deserialize
}
The RectangleConverter has a flag saying "supportsStringConvert = false", so attempting to convert a string into it fails.
This is the reason that deserializing this specific object is failing.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…