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); } }
protected ObjectPropertyInfo(BaseObjectAttribute attribute, string modelName) { TkDebug.AssertArgumentNull(attribute, "attribute", null); Attribute = attribute; ModelName = modelName; }
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); } }
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); }
public void Write(object writer, object receiver, string modelName, WriteSettings settings, QName root, object serializerData, BaseObjectAttribute attribute) { throw new NotImplementedException(); }
public void Read(object reader, object receiver, string modelName, ReadSettings settings, QName root, BaseObjectAttribute attribute) { throw new NotImplementedException(); }
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); }
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)); }
public abstract ObjectPropertyInfo Clone(BaseObjectAttribute attribute);
public override ObjectPropertyInfo Clone(BaseObjectAttribute attribute) { throw new NotSupportedException(); }
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); }
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); } } }
private static bool IsSupport(BaseObjectAttribute attribute) { return(attribute is ObjectElementAttribute || attribute is DictionaryAttribute); }
public override ObjectPropertyInfo Clone(BaseObjectAttribute attribute) { return(new ReflectorObjectPropertyInfo(fProperty, attribute, ModelName)); }