示例#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
        public static void ReadDictionaryFromDataRow(this IDictionary dictionary,
                                                     DataRow row, ReadSettings settings)
        {
            TkDebug.AssertArgumentNull(dictionary, "dictionary", null);
            TkDebug.AssertArgumentNull(row, "row", null);
            TkDebug.AssertArgumentNull(settings, "settings", null);

            IObjectSerializer   serializer = ObjectExtension.CreateSerializer("DataRow");
            object              reader     = serializer.CreateCustomReader(row);
            DictionaryAttribute attr       = new DictionaryAttribute {
                AutoTrim = true
            };

            serializer.ReadDictionary(reader, dictionary, attr, null, settings, null, null);
        }
示例#3
0
 protected override void Read(IObjectSerializer serializer, object reader, object receiver,
                              ReadSettings settings, ObjectPropertyInfo info, object serializerData)
 {
     serializer.ReadDictionary(this, reader, receiver, settings, info, serializerData);
 }