4 using System.Collections.Generic;
6 namespace SiliconStudio.Core.Serialization.Converters
8 public class ListDataConverter<TData, T, TDataItem, TItem> :
DataConverter<TData, T> where TData : class, IList<TDataItem> where T : class, IList<TItem>
18 bool isArray = typeof(TData) == typeof(TDataItem[]);
23 if (typeof(TData) == typeof(List<TDataItem>) || typeof(TData) == typeof(IList<TDataItem>))
24 data = (TData)(IList<TDataItem>)
new List<TDataItem>(obj.Count);
26 data = (TData)(IList<TDataItem>)
new TDataItem[obj.Count];
28 data = Activator.CreateInstance<TData>();
36 foreach (var item
in obj)
38 var itemData =
default(TDataItem);
39 converterContext.ConvertToData(ref itemData, item);
41 data[index] = itemData;
56 bool isArray = typeof(T) == typeof(TItem[]);
61 if (typeof(T) == typeof(List<TItem>) || typeof(T) == typeof(IList<TItem>))
62 source = (T)(IList<TItem>)
new List<TItem>(data.Count);
64 source = (T)(IList<TItem>)
new TItem[data.Count];
66 source = Activator.CreateInstance<T>();
75 var sourceArray = (TItem[])(
object)source;
76 for (
int i = 0; i < source.Count; ++i)
78 var itemData =
default(TItem);
79 converterContext.ConvertFromData(data[i], ref itemData);
80 sourceArray[i] = itemData;
85 foreach (var item
in data)
87 var itemData =
default(TItem);
88 converterContext.ConvertFromData(item, ref itemData);
override void ConvertToData(ConverterContext converterContext, ref TData data, T obj)
Converts the given source object to its data counterpart.
Base class for converters to/from a data type.
override void ConvertFromData(ConverterContext converterContext, TData data, ref T source)