private void SetExtensionData(JsonObjectContract contract, JsonReader reader, string memberName, object o) { if (contract.ExtensionDataSetter != null) { try { JToken extensionDataValue = JToken.ReadFrom(reader); contract.ExtensionDataSetter(o, memberName, extensionDataValue); } catch (Exception ex) { throw JsonSerializationException.Create(reader, "Error setting value in extension data for type '{0}'.".FormatWith(CultureInfo.InvariantCulture, contract.UnderlyingType), ex); } } else { reader.Skip(); } }