From e5b00fd157f73dca0afc311f103c0dbb6b3f3765 Mon Sep 17 00:00:00 2001 From: RogueException Date: Wed, 22 Jun 2016 17:34:32 -0300 Subject: [PATCH] Revert "Added Expressions dependency" This reverts commit 3e5193c3b7c7d92fa3716264f23d1ec311e2a4f2. --- .../Net/Converters/DiscordContractResolver.cs | 16 ++++++++++------ src/Discord.Net/project.json | 1 - 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Discord.Net/Net/Converters/DiscordContractResolver.cs b/src/Discord.Net/Net/Converters/DiscordContractResolver.cs index f92de2a1c..89eea4f87 100644 --- a/src/Discord.Net/Net/Converters/DiscordContractResolver.cs +++ b/src/Discord.Net/Net/Converters/DiscordContractResolver.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; -using System.Linq.Expressions; namespace Discord.Net.Converters { @@ -29,11 +28,11 @@ namespace Discord.Net.Converters var typeInput = propInfo.DeclaringType; var innerTypeOutput = type.GenericTypeArguments[0]; - var parentArg = Expression.Parameter(typeof(object)); - var optional = Expression.Property(Expression.Convert(parentArg, property.DeclaringType), member as PropertyInfo); - var isSpecified = Expression.Property(optional, "IsSpecified"); - var lambda = Expression.Lambda>(isSpecified, parentArg).Compile(); - property.ShouldSerialize = x => lambda(x); + var getter = typeof(Func<,>).MakeGenericType(typeInput, type); + var getterDelegate = propInfo.GetMethod.CreateDelegate(getter); + var shouldSerialize = _shouldSerialize.MakeGenericMethod(typeInput, innerTypeOutput); + var shouldSerializeDelegate = (Func)shouldSerialize.CreateDelegate(typeof(Func)); + property.ShouldSerialize = x => shouldSerializeDelegate(x, getterDelegate); var converterType = typeof(OptionalConverter<>).MakeGenericType(innerTypeOutput).GetTypeInfo(); var instanceField = converterType.GetDeclaredField("Instance"); @@ -97,5 +96,10 @@ namespace Discord.Net.Converters return null; } + + private static bool ShouldSerialize(object owner, Delegate getter) + { + return (getter as Func>)((TOwner)owner).IsSpecified; + } } } diff --git a/src/Discord.Net/project.json b/src/Discord.Net/project.json index b6daffdc4..7f202690e 100644 --- a/src/Discord.Net/project.json +++ b/src/Discord.Net/project.json @@ -25,7 +25,6 @@ "System.Collections.Immutable": "1.2.0-rc2-24027", "System.IO.Compression": "4.1.0-rc2-24027", "System.IO.FileSystem": "4.0.1-rc2-24027", - "System.Linq.Expressions": "4.0.11-rc2-24027", "System.Net.Http": "4.0.1-rc2-24027", "System.Net.WebSockets.Client": "4.0.0-rc2-24027", "System.Reflection.Extensions": "4.0.1-rc2-24027",