Browse Source

Added an API.Image if statement to DiscordContractResolver, and rewrote ImageConverter to work with Optional<Image?>

pull/447/head
Sindre G. Langhus 8 years ago
parent
commit
bb52930f4f
2 changed files with 20 additions and 11 deletions
  1. +19
    -10
      src/Discord.Net.Core/Net/Converters/DiscordContractResolver.cs
  2. +1
    -1
      src/Discord.Net.Core/Net/Converters/ImageConverter.cs

+ 19
- 10
src/Discord.Net.Core/Net/Converters/DiscordContractResolver.cs View File

@@ -28,16 +28,25 @@ namespace Discord.Net.Converters

if (genericType == typeof(Optional<>))
{
var typeInput = propInfo.DeclaringType;
var innerTypeOutput = type.GenericTypeArguments[0];

var getter = typeof(Func<,>).MakeGenericType(typeInput, type);
var getterDelegate = propInfo.GetMethod.CreateDelegate(getter);
var shouldSerialize = _shouldSerialize.MakeGenericMethod(typeInput, innerTypeOutput);
var shouldSerializeDelegate = (Func<object, Delegate, bool>)shouldSerialize.CreateDelegate(typeof(Func<object, Delegate, bool>));
property.ShouldSerialize = x => shouldSerializeDelegate(x, getterDelegate);

converter = MakeGenericConverter(propInfo, typeof(OptionalConverter<>), innerTypeOutput);
if (type == typeof(Optional<API.Image?>))
{
converter = ImageConverter.Instance;
}
else
{
var typeInput = propInfo.DeclaringType;
var innerTypeOutput = type.GenericTypeArguments[0];

var getter = typeof(Func<,>).MakeGenericType(typeInput, type);
var getterDelegate = propInfo.GetMethod.CreateDelegate(getter);
var shouldSerialize = _shouldSerialize.MakeGenericMethod(typeInput, innerTypeOutput);
var shouldSerializeDelegate =
(Func<object, Delegate, bool>)
shouldSerialize.CreateDelegate(typeof(Func<object, Delegate, bool>));
property.ShouldSerialize = x => shouldSerializeDelegate(x, getterDelegate);

converter = MakeGenericConverter(propInfo, typeof(OptionalConverter<>), innerTypeOutput);
}
}
else
converter = GetConverter(propInfo, type);


+ 1
- 1
src/Discord.Net.Core/Net/Converters/ImageConverter.cs View File

@@ -20,7 +20,7 @@ namespace Discord.Net.Converters

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var image = (Model)value;
var image = ((Optional<Model?>)value).Value.Value;

if (image.Stream != null)
{


Loading…
Cancel
Save