Browse Source

Fixed List serialization

voice-allocs
RogueException 7 years ago
parent
commit
9027bcad0c
19 changed files with 71 additions and 74 deletions
  1. +4
    -4
      src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs
  2. +2
    -2
      src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs
  3. +2
    -2
      src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs
  4. +4
    -4
      src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs
  5. +2
    -2
      src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs
  6. +4
    -4
      src/Discord.Net.Serialization/Json/Converters/Collections.cs
  7. +4
    -4
      src/Discord.Net.Serialization/Json/Converters/Nullable.cs
  8. +5
    -8
      src/Discord.Net.Serialization/Json/Converters/Object.cs
  9. +4
    -4
      src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs
  10. +2
    -2
      src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs
  11. +6
    -6
      src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs
  12. +4
    -4
      src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs
  13. +8
    -8
      src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs
  14. +2
    -2
      src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs
  15. +8
    -8
      src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs
  16. +2
    -2
      src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs
  17. +2
    -2
      src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs
  18. +2
    -2
      src/Discord.Net.Serialization/Json/JsonFormat.cs
  19. +4
    -4
      src/Discord.Net.Serialization/Json/JsonPropertyMap.cs

+ 4
- 4
src/Discord.Net.Rest/Serialization/JsonConverters/EntityOrIdPropertyConverter.cs View File

@@ -12,19 +12,19 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public EntityOrId<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public EntityOrId<T> Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
if (reader.ValueType == JsonValueType.Number)
return new EntityOrId<T>(reader.ParseUInt64());
return new EntityOrId<T>(_innerConverter.Read(map, reader, false));
return new EntityOrId<T>(_innerConverter.Read(map, ref reader, false));
}

public void Write(PropertyMap map, JsonWriter writer, EntityOrId<T> value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, EntityOrId<T> value, bool isTopLevel)
{
if (value.Object != null)
_innerConverter.Write(map, writer, value.Object, isTopLevel);
_innerConverter.Write(map, ref writer, value.Object, isTopLevel);
else
{
if (isTopLevel)


+ 2
- 2
src/Discord.Net.Rest/Serialization/JsonConverters/ImagePropertyConverter.cs View File

@@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters
{
internal class ImagePropertyConverter : IJsonPropertyConverter<API.Image>
{
public API.Image Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public API.Image Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
=> throw new System.NotImplementedException();
public void Write(PropertyMap map, JsonWriter writer, API.Image value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, API.Image value, bool isTopLevel)
=> throw new System.NotImplementedException();
}
}

+ 2
- 2
src/Discord.Net.Rest/Serialization/JsonConverters/Int53PropertyConverter.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class Int53PropertyConverter : IJsonPropertyConverter<long>
{
public long Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public long Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number");
return reader.ParseInt64();
}
public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, long value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);


+ 4
- 4
src/Discord.Net.Rest/Serialization/JsonConverters/OptionalPropertyConverter.cs View File

@@ -11,13 +11,13 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public Optional<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
=> new Optional<T>(_innerConverter.Read(map, reader, isTopLevel));
public Optional<T> Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
=> new Optional<T>(_innerConverter.Read(map, ref reader, isTopLevel));

public void Write(PropertyMap map, JsonWriter writer, Optional<T> value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, Optional<T> value, bool isTopLevel)
{
if (value.IsSpecified)
_innerConverter.Write(map, writer, value.Value, isTopLevel);
_innerConverter.Write(map, ref writer, value.Value, isTopLevel);
}
}
}

+ 2
- 2
src/Discord.Net.Rest/Serialization/JsonConverters/UInt53PropertyConverter.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class UInt53PropertyConverter : IJsonPropertyConverter<ulong>
{
public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public ulong Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number");
return reader.ParseUInt64();
}
public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, ulong value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);


+ 4
- 4
src/Discord.Net.Serialization/Json/Converters/Collections.cs View File

@@ -12,25 +12,25 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public List<T> Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public List<T> Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if ((isTopLevel && !reader.Read()) || reader.TokenType != JsonTokenType.StartArray)
throw new SerializationException("Bad input, expected StartArray");

var list = new List<T>();
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
list.Add(_innerConverter.Read(map, reader, false));
list.Add(_innerConverter.Read(map, ref reader, false));
return list;
}

public void Write(PropertyMap map, JsonWriter writer, List<T> value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, List<T> value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteArrayStart(map.Key);
else
writer.WriteArrayStart();
for (int i = 0; i < value.Count; i++)
_innerConverter.Write(map, writer, value[i], false);
_innerConverter.Write(map, ref writer, value[i], false);
writer.WriteArrayEnd();
}
}


+ 4
- 4
src/Discord.Net.Serialization/Json/Converters/Nullable.cs View File

@@ -12,19 +12,19 @@ namespace Discord.Serialization.Json.Converters
_innerConverter = innerConverter;
}

public T? Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public T? Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
if (reader.ValueType == JsonValueType.Null)
return null;
return _innerConverter.Read(map, reader, false);
return _innerConverter.Read(map, ref reader, false);
}

public void Write(PropertyMap map, JsonWriter writer, T? value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, T? value, bool isTopLevel)
{
if (value.HasValue)
_innerConverter.Write(map, writer, value.Value, isTopLevel);
_innerConverter.Write(map, ref writer, value.Value, isTopLevel);
else
{
if (isTopLevel)


+ 5
- 8
src/Discord.Net.Serialization/Json/Converters/Object.cs View File

@@ -7,7 +7,7 @@ namespace Discord.Serialization.Json.Converters
{
private static readonly ModelMap<T> _map = SerializationFormat.Json.MapModel<T>();
public T Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
var model = new T();

@@ -20,25 +20,22 @@ namespace Discord.Serialization.Json.Converters
if (reader.TokenType != JsonTokenType.PropertyName)
throw new SerializationException("Bad input, expected PropertyName");

string key = reader.ParseString();
string key = reader.ParseString();
if (_map.PropertiesByKey.TryGetValue(key, out var property))
(property as IJsonPropertyMap<T>).Read(model, reader);
(property as IJsonPropertyMap<T>).Read(model, ref reader);
else
reader.Skip(); //Unknown property, skip

if (!reader.Read())
throw new SerializationException("Bad input, expected Value");
}
throw new SerializationException("Bad input, expected EndObject");
}
public void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteObjectStart(map.Key);
else
writer.WriteObjectStart();
for (int i = 0; i < _map.Properties.Length; i++)
(_map.Properties[i] as IJsonPropertyMap<T>).Write(value, writer);
(_map.Properties[i] as IJsonPropertyMap<T>).Write(value, ref writer);
writer.WriteObjectEnd();
}
}

+ 4
- 4
src/Discord.Net.Serialization/Json/Converters/Primitives.DateTime.cs View File

@@ -5,7 +5,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class DateTimePropertyConverter : IJsonPropertyConverter<DateTime>
{
public DateTime Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public DateTime Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -13,7 +13,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected String");
return reader.ParseDateTime();
}
public void Write(PropertyMap map, JsonWriter writer, DateTime value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, DateTime value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -24,7 +24,7 @@ namespace Discord.Serialization.Json.Converters

internal class DateTimeOffsetPropertyConverter : IJsonPropertyConverter<DateTimeOffset>
{
public DateTimeOffset Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public DateTimeOffset Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -32,7 +32,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected String");
return reader.ParseDateTimeOffset();
}
public void Write(PropertyMap map, JsonWriter writer, DateTimeOffset value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, DateTimeOffset value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);


+ 2
- 2
src/Discord.Net.Serialization/Json/Converters/Primitives.Enum.cs View File

@@ -4,9 +4,9 @@ namespace Discord.Serialization.Json.Converters
{
internal class EnumPropertyConverter<T> : IJsonPropertyConverter<T>
{
public T Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
=> throw new System.NotImplementedException();
public void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel)
=> throw new System.NotImplementedException();
}
}

+ 6
- 6
src/Discord.Net.Serialization/Json/Converters/Primitives.Float.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class SinglePropertyConverter : IJsonPropertyConverter<float>
{
public float Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public float Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseSingle();
}
public void Write(PropertyMap map, JsonWriter writer, float value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, float value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
@@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters

internal class DoublePropertyConverter : IJsonPropertyConverter<double>
{
public double Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public double Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseDouble();
}
public void Write(PropertyMap map, JsonWriter writer, double value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, double value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());
@@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters

internal class DecimalPropertyConverter : IJsonPropertyConverter<decimal>
{
public decimal Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public decimal Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseDecimal();
}
public void Write(PropertyMap map, JsonWriter writer, decimal value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, decimal value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());


+ 4
- 4
src/Discord.Net.Serialization/Json/Converters/Primitives.Other.cs View File

@@ -5,7 +5,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class BooleanPropertyConverter : IJsonPropertyConverter<bool>
{
public bool Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public bool Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -16,7 +16,7 @@ namespace Discord.Serialization.Json.Converters
default: throw new SerializationException("Bad input, expected False or True");
}
}
public void Write(PropertyMap map, JsonWriter writer, bool value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, bool value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -27,7 +27,7 @@ namespace Discord.Serialization.Json.Converters

internal class GuidPropertyConverter : IJsonPropertyConverter<Guid>
{
public Guid Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public Guid Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -35,7 +35,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected String");
return Guid.Parse(reader.ParseString());
}
public void Write(PropertyMap map, JsonWriter writer, Guid value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, Guid value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());


+ 8
- 8
src/Discord.Net.Serialization/Json/Converters/Primitives.Signed.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class Int8PropertyConverter : IJsonPropertyConverter<sbyte>
{
public sbyte Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public sbyte Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseInt8();
}
public void Write(PropertyMap map, JsonWriter writer, sbyte value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, sbyte value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters

internal class Int16PropertyConverter : IJsonPropertyConverter<short>
{
public short Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public short Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseInt16();
}
public void Write(PropertyMap map, JsonWriter writer, short value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, short value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters

internal class Int32PropertyConverter : IJsonPropertyConverter<int>
{
public int Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public int Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseInt32();
}
public void Write(PropertyMap map, JsonWriter writer, int value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, int value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -61,7 +61,7 @@ namespace Discord.Serialization.Json.Converters

internal class Int64PropertyConverter : IJsonPropertyConverter<long>
{
public long Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public long Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -69,7 +69,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseInt64();
}
public void Write(PropertyMap map, JsonWriter writer, long value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, long value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());


+ 2
- 2
src/Discord.Net.Serialization/Json/Converters/Primitives.String.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters

internal class StringPropertyConverter : IJsonPropertyConverter<string>
{
public string Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public string Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected String");
return reader.ParseString();
}
public void Write(PropertyMap map, JsonWriter writer, string value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, string value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);


+ 8
- 8
src/Discord.Net.Serialization/Json/Converters/Primitives.Unsigned.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json.Converters
{
internal class UInt8PropertyConverter : IJsonPropertyConverter<byte>
{
public byte Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public byte Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -12,7 +12,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseUInt8();
}
public void Write(PropertyMap map, JsonWriter writer, byte value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, byte value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -23,7 +23,7 @@ namespace Discord.Serialization.Json.Converters

internal class UInt16PropertyConverter : IJsonPropertyConverter<ushort>
{
public ushort Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public ushort Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -31,7 +31,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseUInt16();
}
public void Write(PropertyMap map, JsonWriter writer, ushort value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, ushort value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -42,7 +42,7 @@ namespace Discord.Serialization.Json.Converters

internal class UInt32PropertyConverter : IJsonPropertyConverter<uint>
{
public uint Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public uint Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -50,7 +50,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseUInt32();
}
public void Write(PropertyMap map, JsonWriter writer, uint value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, uint value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value);
@@ -61,7 +61,7 @@ namespace Discord.Serialization.Json.Converters

internal class UInt64PropertyConverter : IJsonPropertyConverter<ulong>
{
public ulong Read(PropertyMap map, JsonReader reader, bool isTopLevel)
public ulong Read(PropertyMap map, ref JsonReader reader, bool isTopLevel)
{
if (isTopLevel)
reader.Read();
@@ -69,7 +69,7 @@ namespace Discord.Serialization.Json.Converters
throw new SerializationException("Bad input, expected Number or String");
return reader.ParseUInt64();
}
public void Write(PropertyMap map, JsonWriter writer, ulong value, bool isTopLevel)
public void Write(PropertyMap map, ref JsonWriter writer, ulong value, bool isTopLevel)
{
if (isTopLevel)
writer.WriteAttribute(map.Key, value.ToString());


+ 2
- 2
src/Discord.Net.Serialization/Json/IJsonPropertyConverter.cs View File

@@ -4,7 +4,7 @@ namespace Discord.Serialization.Json
{
public interface IJsonPropertyConverter<T>
{
T Read(PropertyMap map, JsonReader reader, bool isTopLevel);
void Write(PropertyMap map, JsonWriter writer, T value, bool isTopLevel);
T Read(PropertyMap map, ref JsonReader reader, bool isTopLevel);
void Write(PropertyMap map, ref JsonWriter writer, T value, bool isTopLevel);
}
}

+ 2
- 2
src/Discord.Net.Serialization/Json/IJsonPropertyMap.cs View File

@@ -6,7 +6,7 @@ namespace Discord.Serialization
{
string Key { get; }

void Write(TModel model, JsonWriter writer);
void Read(TModel model, JsonReader reader);
void Write(TModel model, ref JsonWriter writer);
void Read(TModel model, ref JsonReader reader);
}
}

+ 2
- 2
src/Discord.Net.Serialization/Json/JsonFormat.cs View File

@@ -70,14 +70,14 @@ namespace Discord.Serialization.Json
if (!reader.Read())
return null;
var converter = _converters.Get<TModel>() as IJsonPropertyConverter<TModel>;
return converter.Read(null, reader, false);
return converter.Read(null, ref reader, false);
}

protected internal override void Write<TModel>(Serializer serializer, ArrayFormatter stream, TModel model)
{
var writer = new JsonWriter(stream);
var converter = _converters.Get<TModel>() as IJsonPropertyConverter<TModel>;
converter.Write(null, writer, model, false);
converter.Write(null, ref writer, model, false);
}
}
}

+ 4
- 4
src/Discord.Net.Serialization/Json/JsonPropertyMap.cs View File

@@ -19,16 +19,16 @@ namespace Discord.Serialization.Json
_setFunc = propInfo.SetMethod.CreateDelegate(typeof(Action<TModel, TType>)) as Action<TModel, TType>;
}

public void Write(TModel model, JsonWriter writer)
public void Write(TModel model, ref JsonWriter writer)
{
var value = _getFunc(model);
if (value == null && ExcludeNull)
return;
_converter.Write(this, writer, value, true);
_converter.Write(this, ref writer, value, true);
}
public void Read(TModel model, JsonReader reader)
public void Read(TModel model, ref JsonReader reader)
{
var value = _converter.Read(this, reader, true);
var value = _converter.Read(this, ref reader, true);
_setFunc(model, value);
}
}


Loading…
Cancel
Save