public static void ReadObject(IObjectSerializer serializer, object reader, object receiver, string modelName, ReadSettings settings, QName root, BaseObjectAttribute attribute, object serializerData, SerializerOptions options) { if (receiver is IDictionary) { BaseDictionaryAttribute attr = attribute as BaseDictionaryAttribute; options.CheckReadDictionary(serializer, attr); if (attr == null) { attr = GetDictionaryAttribute(receiver, root); } serializer.ReadDictionary(reader, receiver.Convert <IDictionary>(), attr, modelName, settings, root, serializerData); } else if (receiver is IList) { SimpleElementAttribute attr = attribute as SimpleElementAttribute; options.CheckReadList(serializer, attr); if (attr == null) { Type valueType = ObjectUtil.GetListValueType(receiver.GetType(), "", null); attr = GetElementAttribute(receiver, valueType); } serializer.ReadList(reader, receiver.Convert <IList>(), attr, modelName, settings, root, serializerData); } else { options.CheckReadObject(serializer); serializer.ReadObject(reader, receiver, modelName, settings, root, serializerData); } }
private static object ReadObject(bool usector, ReadSettings settings, DataRow row, Type objectType, object receiver, IObjectSerializer datarowSerializer, string modelName) { object subObject = usector ? ObjectUtil.CreateObjectWithCtor(objectType) : ObjectUtil.CreateObject(objectType); object rowReader = datarowSerializer.CreateCustomReader(row); datarowSerializer.ReadObject(rowReader, subObject, modelName, settings, QName.Toolkit, null); SerializerUtil.SetParent(receiver, subObject); return(subObject); }
public static void ReadFromDataRow(this object receiver, DataRow row, string modelName, ReadSettings settings) { TkDebug.AssertArgumentNull(receiver, "receiver", null); TkDebug.AssertArgumentNull(row, "row", null); TkDebug.AssertArgumentNull(settings, "settings", null); IObjectSerializer serializer = ObjectExtension.CreateSerializer("DataRow"); object reader = serializer.CreateCustomReader(row); serializer.ReadObject(reader, receiver, modelName, settings, QName.Toolkit, null); SerializerUtil.ReadObjectCallBack(receiver); }
public static List <T> CreateListFromTable <T>(this DataTable table, string modelName, ReadSettings settings, Func <T> createFunc) { if (table == null) { return(null); } TkDebug.AssertArgumentNull(settings, "settings", null); TkDebug.AssertArgumentNull(createFunc, "createFunc", null); List <T> result = new List <T>(table.Rows.Count); IObjectSerializer serializer = ObjectExtension.CreateSerializer("DataRow"); foreach (DataRow row in table.Rows) { T obj = createFunc(); object reader = serializer.CreateCustomReader(row); serializer.ReadObject(reader, obj, modelName, settings, QName.Toolkit, null); result.Add(obj); } return(result); }