Преглед на файлове

Add support for serializing IEnumerable<T>

Brad Robinson преди 6 години
родител
ревизия
4f9f953195
променени са 1 файла, в които са добавени 12 реда и са изтрити 0 реда
  1. 12 0
      PetaJson.cs

+ 12 - 0
PetaJson.cs

@@ -1059,6 +1059,18 @@ namespace PetaJson
                     return listType.GetMethod("ToArray").Invoke(list, null);
                 }
 
+                // IEnumerable
+                if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IEnumerable<>))
+                {
+                    // First parse as a List<>
+                    var declType = type.GetGenericArguments()[0];
+                    var listType = typeof(List<>).MakeGenericType(declType);
+                    var list = DecoratingActivator.CreateInstance(listType);
+                    ParseInto(list);
+
+                    return list;
+                }
+
                 // Convert interfaces to concrete types
                 if (type.IsInterface)
                     type = Utils.ResolveInterfaceToClass(type);