Don't cache generic JsonConverters

This commit is contained in:
RogueException
2016-10-15 13:47:23 -03:00
parent 890318ecfc
commit 881c0320bd
4 changed files with 7 additions and 13 deletions

View File

@@ -6,8 +6,6 @@ namespace Discord.Net.Converters
{
internal class ArrayConverter<T> : JsonConverter
{
public static ArrayConverter<T> Instance;
private readonly JsonConverter _innerConverter;
public override bool CanConvert(Type objectType) => true;

View File

@@ -104,14 +104,14 @@ namespace Discord.Net.Converters
private static JsonConverter MakeGenericConverter(PropertyInfo propInfo, Type converterType, Type innerType)
{
var genericType = converterType.MakeGenericType(innerType).GetTypeInfo();
var instanceField = genericType.GetDeclaredField("Instance");
var converter = instanceField.GetValue(null) as JsonConverter;
if (converter == null)
{
//var instanceField = genericType.GetDeclaredField("Instance");
//var converter = instanceField.GetValue(null) as JsonConverter;
//if (converter == null)
//{
var innerConverter = GetConverter(propInfo, innerType);
converter = genericType.DeclaredConstructors.First().Invoke(new object[] { innerConverter }) as JsonConverter;
instanceField.SetValue(null, converter);
}
var converter = genericType.DeclaredConstructors.First().Invoke(new object[] { innerConverter }) as JsonConverter;
//instanceField.SetValue(null, converter);
//}
return converter;
}
}

View File

@@ -5,8 +5,6 @@ namespace Discord.Net.Converters
{
internal class OptionalConverter<T> : JsonConverter
{
internal static OptionalConverter<T> Instance;
private readonly JsonConverter _innerConverter;
public override bool CanConvert(Type objectType) => true;

View File

@@ -6,8 +6,6 @@ namespace Discord.Net.Converters
{
internal class UInt64EntityOrIdConverter<T> : JsonConverter
{
public static UInt64EntityOrIdConverter<T> Instance;
private readonly JsonConverter _innerConverter;
public override bool CanConvert(Type objectType) => true;