瀏覽代碼

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);