Browse Source

Merge bb52930f4f into 2c075e186a

pull/447/merge
Sindre Langhus GitHub 8 years ago
parent
commit
813efd761f
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