示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }