public string SerializeList(IEnumerable <ISerializableSelector> list) { // Get the list of all items to serialize, including dependencies and excluding non-serializable ISerializables List <ISerializable> items = new SerializableEnumerator(list).ToList(); // Make reference IDs for every serialized object Dictionary <ISerializable, long> refDict = MakeSerializationRefDict(items); // Loop over all items, making their dynamic objects and adding them to the serialization queue List <dynamic> dynamicList = new List <dynamic>(items.Count); foreach (ISerializable item in items) { dynamic serData = new ExpandoObject(); serData.type = item.GetType().FullName; object data = item.Serialize(); serData.dataType = data.GetType().FullName; serData.data = JsonConvert.SerializeObject(data); serData.bindings = item.SerializeBindings(refDict); dynamicList.Add(serData); } // Serialize into JSON return(JsonConvert.SerializeObject(dynamicList.ToArray())); }
public string SerializeList(IEnumerable<ISerializableSelector> list) { // Get the list of all items to serialize, including dependencies and excluding non-serializable ISerializables List<ISerializable> items = new SerializableEnumerator(list).ToList(); // Make reference IDs for every serialized object Dictionary<ISerializable, long> refDict = MakeSerializationRefDict(items); // Loop over all items, making their dynamic objects and adding them to the serialization queue List<dynamic> dynamicList = new List<dynamic>(items.Count); foreach (ISerializable item in items) { dynamic serData = new ExpandoObject(); serData.type = item.GetType().FullName; object data = item.Serialize(); serData.dataType = data.GetType().FullName; serData.data = JsonConvert.SerializeObject(data); serData.bindings = item.SerializeBindings(refDict); dynamicList.Add(serData); } // Serialize into JSON return JsonConvert.SerializeObject(dynamicList.ToArray()); }