Browse Source

optimizations on OptionalConverter

pull/981/head
Christopher F 8 years ago
parent
commit
2299dc8cca
1 changed files with 10 additions and 5 deletions
  1. +10
    -5
      src/Discord.Net.Rest/Net/Converters/OptionalConverter.cs

+ 10
- 5
src/Discord.Net.Rest/Net/Converters/OptionalConverter.cs View File

@@ -18,15 +18,20 @@ namespace Discord.Net.Converters


public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
object obj;
T obj;
// custom converters need to be able to safely fail; move this check in here to prevent wasteful casting when parsing primitives
if (_innerConverter != null) if (_innerConverter != null)
obj = _innerConverter.ReadJson(reader, typeof(T), null, serializer);
{
object o = _innerConverter.ReadJson(reader, typeof(T), null, serializer);
if (o is Optional<T>)
return o;

obj = (T)o;
}
else else
obj = serializer.Deserialize<T>(reader); obj = serializer.Deserialize<T>(reader);


if (obj is Optional<T>)
return obj;
return new Optional<T>((T)obj);
return new Optional<T>(obj);
} }


public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)


Loading…
Cancel
Save