//separate the PropertyContext from the entity name/value for handling collections private void WriteEntity(IVgXmlSerializerContext sContext, object entityValue, string entityName, VgXmlEntityType entityType) { switch (entityType) { case VgXmlEntityType.Attribute: sContext.Writer.WriteAttributeString(entityName, ObjectToString(entityValue)); break; case VgXmlEntityType.Element: sContext.Writer.WriteStartElement(entityName); if (!(entityValue.GetType().IsPrimitive || entityValue is string)) { sContext.Serializer.Serialize(sContext.Writer, entityValue); } else { sContext.Writer.WriteValue(ObjectToString(entityValue)); } sContext.Writer.WriteEndElement(); break; case VgXmlEntityType.RawElement: sContext.Writer.WriteStartElement(entityName); sContext.Writer.WriteRaw(ObjectToString(entityValue)); sContext.Writer.WriteEndElement(); break; } }
public void EntityType_ReturnsEntityTypeDeclaredInPropertyDecoration(string propertyName, VgXmlEntityType expectedEntityType) { var property = typeof(TestClass).GetProperty(propertyName); var context = VgXmlPropertyContext.CreateContext(property); Assert.That(context.EntityType, Is.EqualTo(expectedEntityType)); }
private object ReadEntity(IVgXmlSerializerContext sContext, Type entityValueType, VgXmlEntityType entityType) { switch (entityType) { case VgXmlEntityType.Attribute: return(StringToObject(sContext.Reader.ReadContentAsString(), entityValueType)); case VgXmlEntityType.Element: if (!(entityValueType.IsPrimitive || entityValueType == typeof(string))) { return(sContext.Serializer.Deserialize(sContext.Reader, entityValueType)); } else { return(StringToObject(sContext.Reader.ReadString(), entityValueType)); } case VgXmlEntityType.RawElement: return(sContext.Reader.ReadOuterXml()); } throw new NotImplementedException(entityType.ToString()); }