public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { XmlWriter xmlWriter = writer.Convert <XmlWriter>(); PrefixTable prefixTable = serializerData.Convert <PrefixTable>(); WriteStartElement(xmlWriter, info.QName, prefixTable); IDictionary dict = value as IDictionary; if (dict != null) { var configData = attribute.PlugInFactory.ConfigData; foreach (DictionaryEntry item in dict) { var itemAttr = configData[item.Value.GetType()]; QName itemName = itemAttr.GetQName(itemAttr.LocalName); Write(writer, item.Value, info.ModelName, settings, itemName, prefixTable, null); //WriteStartElement(xmlWriter, itemName, prefixTable); //InternalWriteXml(writer, item.Value, info.ModelName, settings, prefixTable); //xmlWriter.WriteEndElement(); } } xmlWriter.WriteEndElement(); }
public void ReadDynamicDictionary(DynamicDictionaryAttribute attribute, object reader, object receiver, ReadSettings settings, ObjectPropertyInfo info, object serializerData) { JsonTextReader jsonReader = reader.Convert <JsonTextReader>(); AssertRead(jsonReader); AssertReadState(jsonReader, JsonToken.StartObject, info.PropertyName); IDictionary dict = attribute.GetDictionary(receiver, info); var configData = attribute.PlugInFactory.ConfigData; //var propertyInfo = info.Convert<ReflectorObjectPropertyInfo>().Property; var elementReader = new ConfigFactoryElementReader(attribute, info, info.ModelName); while (jsonReader.Read()) { if (jsonReader.TokenType == JsonToken.EndObject) { break; } AssertReadState(jsonReader, JsonToken.PropertyName, info.PropertyName); string name = jsonReader.Value.ToString(); AssertRead(jsonReader); AssertReadState(jsonReader, JsonToken.StartObject, info.PropertyName); ObjectPropertyInfo subPropertyInfo = elementReader[name]; Type objectType = subPropertyInfo.ObjectType; bool useConstructor = subPropertyInfo.Attribute.Convert <ObjectElementAttribute>().UseConstructor; object subObject = ReadObject(useConstructor, settings, jsonReader, objectType, receiver, info.ModelName); dict[name] = subObject; //dict.Add(name, value); } }
public void ReadDynamicDictionary(DynamicDictionaryAttribute attribute, object reader, object receiver, ReadSettings settings, ObjectPropertyInfo info, object serializerData) { XmlReader xml = reader.Convert <XmlReader>(); QName name = info.QName; IDictionary dict = attribute.GetDictionary(receiver, info); if (xml.IsEmptyElement) { return; } var configData = attribute.PlugInFactory.ConfigData; //var propertyInfo = info.Convert<ReflectorObjectPropertyInfo>().Property; var elementReader = new ConfigFactoryElementReader(attribute, info, info.ModelName); while (xml.Read()) { if (xml.NodeType == XmlNodeType.EndElement) { QName nodeName = QName.Get(xml); if (nodeName == name) { return; } } if (xml.NodeType == XmlNodeType.Element) { QName nodeName = QName.Get(xml); ObjectPropertyInfo subPropertyInfo; if (elementReader.SupportVersion) { string version = xml.GetAttribute(ToolkitConst.VERSION); subPropertyInfo = elementReader[nodeName, version]; } else { subPropertyInfo = elementReader[nodeName]; } if (subPropertyInfo != null) { ObjectElementAttribute elementAttr = subPropertyInfo.Attribute.Convert <ObjectElementAttribute>(); Type objectType = elementAttr.ObjectType; object subObject = elementAttr.UseConstructor ? ObjectUtil.CreateObjectWithCtor(objectType) : ObjectUtil.CreateObject(objectType); Read(reader, subObject, info.ModelName, settings, nodeName, null); SerializerUtil.SetParent(receiver, subObject); dict[nodeName.LocalName] = subObject; } } } }
public ConfigFactoryElementReader(DynamicDictionaryAttribute attr, ObjectPropertyInfo info, string modelName) { fModelName = modelName; fObjectInfo = info; fConfigData = attr.PlugInFactory.ConfigData; fOrder = attr.Order; fMultiple = false; fCollectionType = attr.CollectionType; fRequired = attr.Required; PropertyName = fObjectInfo.PropertyName; fUseJsonObject = attr.UseJsonObject; }
public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { IDictionary dict = value.Convert <IDictionary>(); DictionaryBuilder builder = writer.Convert <DictionaryBuilder>(); QName name = info.QName; DictionaryBuilder subDict = builder.CreateBuilder(); foreach (DictionaryEntry item in dict) { DictionaryBuilder subDictItem = builder.CreateBuilder(); WriteObject(subDictItem, item.Value, info.ModelName, settings, name, null); subDict.Add(item.Key.ToString(), subDictItem); } builder.Add(name.LocalName, subDict); }
public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { IDictionary dict = value.Convert <IDictionary>(); JsonTextWriter jsonWriter = writer.Convert <JsonTextWriter>(); if (info.WriteMode == SerializerWriteMode.WriteName) { QName name = info.QName; jsonWriter.WritePropertyName(name.LocalName); } jsonWriter.WriteStartObject(); foreach (DictionaryEntry item in dict) { jsonWriter.WritePropertyName(item.Key.ToString()); WriteAObject(writer, item.Value, info.ModelName, settings, jsonWriter); } jsonWriter.WriteEndObject(); }
public void ReadDynamicDictionary(DynamicDictionaryAttribute attribute, object reader, object receiver, ReadSettings settings, ObjectPropertyInfo info, object serializerData) { XElementData currentData = reader.Convert <XElementData>(); XElement current = currentData.Current; IDictionary dict = attribute.GetDictionary(receiver, info); var configData = attribute.PlugInFactory.ConfigData; //var propertyInfo = info.Convert<ReflectorObjectPropertyInfo>().Property; var elementReader = new ConfigFactoryElementReader(attribute, info, info.ModelName); foreach (XElement child in current.Elements()) { string nodeName = child.Name.LocalName; QName qName = child.Name.ToQName(); ObjectPropertyInfo subPropertyInfo; if (elementReader.SupportVersion) { var verAttr = child.Attribute(ToolkitConst.VERSION); string version = verAttr != null ? verAttr.Value : string.Empty; subPropertyInfo = elementReader[nodeName, version]; } else { subPropertyInfo = elementReader[nodeName]; } if (subPropertyInfo != null) { ObjectElementAttribute elementAttr = subPropertyInfo.Attribute.Convert <ObjectElementAttribute>(); Type objectType = elementAttr.ObjectType; object subObject = elementAttr.UseConstructor ? ObjectUtil.CreateObjectWithCtor(objectType) : ObjectUtil.CreateObject(objectType); XElementData next = new XElementData { Current = child, Root = currentData.Root }; Read(next, subObject, info.ModelName, settings, QName.Get(nodeName), null); SerializerUtil.SetParent(receiver, subObject); dict[nodeName] = subObject; } } }
public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { var current = serializerData.Convert <XElement>(); //XElement element = new XElement(info.QName.ToXName()); //current.Add(element); IDictionary dict = value as IDictionary; if (dict != null) { var configData = attribute.PlugInFactory.ConfigData; foreach (DictionaryEntry item in dict) { var itemAttr = configData[item.Value.GetType()]; QName itemName = itemAttr.GetQName(itemAttr.LocalName); XElement subItem = new XElement(itemName.ToXName()); current.Add(subItem); Write(writer, item.Value, info.ModelName, settings, itemName, subItem, null); //InternalWriteXml(writer, item.Value, settings, element, info.ModelName); } } }
public void ReadDynamicDictionary(DynamicDictionaryAttribute attribute, object reader, object receiver, ReadSettings settings, ObjectPropertyInfo info, object serializerData) { throw new NotSupportedException(); }
public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { throw new NotSupportedException(); }
public void ReadDynamicDictionary(DynamicDictionaryAttribute attribute, object reader, object receiver, ReadSettings settings, ObjectPropertyInfo info, object serializerData) { }
public void WriteDynamicDictionary(DynamicDictionaryAttribute attribute, object writer, object value, WriteSettings settings, ObjectPropertyInfo info, object serializerData) { }