Beispiel #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);
            }
        }
Beispiel #2
0
        protected ObjectPropertyInfo(BaseObjectAttribute attribute, string modelName)
        {
            TkDebug.AssertArgumentNull(attribute, "attribute", null);

            Attribute = attribute;
            ModelName = modelName;
        }
Beispiel #3
0
 public static void CheckRequiredContent(BaseObjectAttribute attribute,
                                         Object receiver, ObjectPropertyInfo info, String value)
 {
     if (attribute.Required && string.IsNullOrEmpty(value))
     {
         TkDebug.ThrowToolkitException(string.Format(ObjectUtil.SysCulture,
                                                     "字段{0}标记了required,但是对应的Content没有配置值", info.PropertyName), receiver);
     }
 }
Beispiel #4
0
 public ReflectorObjectPropertyInfo(PropertyInfo property,
                                    BaseObjectAttribute attribute, string modelName)
     : base(attribute, modelName)
 {
     fProperty   = property;
     fPascalName = property.Name;
     fCamelName  = char.ToLowerInvariant(fPascalName[0]) + fPascalName.Substring(1);
     Converter   = TkTypeDescriptor.GetConverter(property,
                                                 attribute.GetObjType(property.PropertyType, property.Name));
 }
 private CustomObjectPropertyInfo(CustomObjectPropertyInfo source,
                                  BaseObjectAttribute attribute)
     : base(attribute, source.ModelName)
 {
     fVersion   = source.fVersion;
     fLocalName = source.fLocalName;
     fReader    = source.fReader;
     fType      = source.fType;
     Converter  = source.Converter;
     fQName     = CreateQName(fLocalName);
 }
Beispiel #6
0
 public void Write(object writer, object receiver, string modelName,
                   WriteSettings settings, QName root, object serializerData, BaseObjectAttribute attribute)
 {
     throw new NotImplementedException();
 }
Beispiel #7
0
 public void Read(object reader, object receiver, string modelName,
                  ReadSettings settings, QName root, BaseObjectAttribute attribute)
 {
     throw new NotImplementedException();
 }
Beispiel #8
0
 public void Write(object writer, object receiver, string modelName, WriteSettings settings,
                   QName root, object serializerData, BaseObjectAttribute attribute)
 {
     SerializerUtil.WriteObject(this, writer, receiver, modelName, settings,
                                root, attribute, null, SerializerOptions.All);
 }
Beispiel #9
0
 public void Read(object reader, object receiver, string modelName, ReadSettings settings,
                  QName root, BaseObjectAttribute attribute)
 {
     SerializerUtil.ReadObject(this, reader, receiver, modelName, settings,
                               root, attribute, null, SerializerOptions.All);
 }
 public override ObjectPropertyInfo Clone(BaseObjectAttribute attribute)
 {
     return(new CustomObjectPropertyInfo(this, attribute));
 }
Beispiel #11
0
 public abstract ObjectPropertyInfo Clone(BaseObjectAttribute attribute);
 public override ObjectPropertyInfo Clone(BaseObjectAttribute attribute)
 {
     throw new NotSupportedException();
 }
Beispiel #13
0
        public static void WriteSerializer(IObjectSerializer serializer, object writer, object receiver,
                                           string modelName, WriteSettings settings, QName root, BaseObjectAttribute attribute)
        {
            object serializerData = serializer.BeginWrite(writer, receiver, settings, root);

            serializer.Write(writer, receiver, modelName, settings, root, serializerData, attribute);
            serializer.EndWrite(writer, receiver, settings);
        }
Beispiel #14
0
        public static void WriteObject(IObjectSerializer serializer, object writer,
                                       object receiver, string modelName, WriteSettings settings, QName root,
                                       BaseObjectAttribute attribute, object serializerData, SerializerOptions options)
        {
            Type type = receiver.GetType();

            if (receiver is IDictionary)
            {
                BaseDictionaryAttribute attr = attribute as BaseDictionaryAttribute;
                options.CheckWriteDictionary(serializer, attr);
                if (attr == null)
                {
                    attr = GetDictionaryAttribute(receiver, root);
                }
                serializer.WriteDictionary(writer, receiver.Convert <IDictionary>(), attr,
                                           modelName, settings, root, serializerData);
            }
            else if (type.IsArray || receiver is IList)
            {
                SimpleElementAttribute attr = attribute as SimpleElementAttribute;
                options.CheckWriteList(serializer, attr);
                if (attr == null)
                {
                    Type valueType;
                    if (type.IsArray)
                    {
                        Array arr = receiver as Array;
                        if (arr.Length == 0)
                        {
                            return;
                        }
                        var enumerator = arr.GetEnumerator();
                        enumerator.MoveNext();
                        valueType = enumerator.Current.GetType();
                    }
                    else
                    {
                        valueType = ObjectUtil.GetListValueType(type, "", null);
                    }
                    attr = GetElementAttribute(receiver, valueType);
                }
                serializer.WriteList(writer, receiver.Convert <IEnumerable>(), attr,
                                     modelName, settings, root, serializerData);
            }
            else
            {
                options.CheckWriteObject(serializer);
                ITkTypeConverter converter = TkTypeDescriptor.GetSimpleConverter(type);
                if (converter != null)
                {
                    SimpleElementAttribute simpleAttr = new SimpleElementAttribute
                    {
                        LocalName    = root.LocalName,
                        NamespaceUri = root.Namespace
                    };
                    var info = new SimpleObjectPropertyInfo(receiver, type, simpleAttr, converter);
                    serializer.WriteElement(simpleAttr, writer, receiver, settings, info, serializerData);
                }
                else
                {
                    serializer.WriteObject(writer, receiver, modelName, settings, root, serializerData);
                }
            }
        }
Beispiel #15
0
 private static bool IsSupport(BaseObjectAttribute attribute)
 {
     return(attribute is ObjectElementAttribute || attribute is DictionaryAttribute);
 }
Beispiel #16
0
 public override ObjectPropertyInfo Clone(BaseObjectAttribute attribute)
 {
     return(new ReflectorObjectPropertyInfo(fProperty, attribute, ModelName));
 }