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); } }