public void Write(object instance, INodeWriter parentNode, Type referencedAsType) { var valueID = valuesCache.Add(instance); var typeName = typeNamesCache.GetTypeName(instance.GetType()); using (var arrayNode = ownerDocument.CreateTypedElement("arrayOfDoubles", typeName, parentNode)) { arrayNode.AddAttribute("ID", valueID.ToString()); using (var itemsNode = ownerDocument.CreateElement("items", arrayNode)) { var values = (Array)instance; itemsNode.AddAttribute("count", values.Length); var innerText = new StringBuilder(); var itemsPerLineCount = 0; foreach (var listItem in values) { innerText.AppendFormat("{0},", listItem); if (++itemsPerLineCount == 10) { itemsPerLineCount = 0; innerText.AppendFormat("\r\n"); } } itemsNode.InnerText = innerText.ToString(); } } }
public void Write(object instance, INodeWriter parentNode, Type referencedAsType) { using (var valueNode = ownerDocument.CreateElement(nodeName, parentNode)) { valueNode.AddAttribute("value", instance.ToString()); } }
public void Write(object instance, INodeWriter parentNode, Type referencedAsType) { using (var valueNode = ownerDocument.CreateElement("primitive", parentNode)) { valueNode.AddAttribute("type", instance.GetType().FullName); valueNode.InnerText = instance.ToString(); } }
public void Write(object instance, INodeWriter parentNode, Type referencedAsType) { var typeName = (MetaDataTypeName)instance; using (var node = ownerDocument.CreateElement("typename", parentNode)) { node.AddAttribute("typeid", typeName.Id); node.AddAttribute("name", typeName.Name); } }
private void WriteItems(ISerialiserNode dictNode, IDictionary items) { using (var itemsNode = ownerDocument.CreateElement("items", dictNode)) { itemsNode.AddAttribute("count", items.Count); foreach (DictionaryEntry item in items) { objectWriter.Write(item.Key, itemsNode, item.Key.GetType()); objectWriter.Write(item.Value, itemsNode, item.Value.GetType()); } } }
public void Write(object owningObject, ISerialiserNode parentNode, MemberInfo memberInfo) { var fieldInfo = memberInfo as FieldInfo; if (fieldInfo != null) { var fieldValue = fieldInfo.GetValue(owningObject); using (var node = ownerDocument.CreateElement("f", parentNode)) { node.AddAttribute("name", fieldInfo.Name); var type = fieldValue == null ? new NullType() : fieldInfo.FieldType; objectWriter.Write(fieldValue, node, type); } } }
public void WriteMembers(object instance, ISerialiserNode parentNode, Type type) { type = type.BaseType; if (TypeIsSerializable(type)) { foreach (var baseTypeMembersWriter in baseTypeMembersWriters) { if (baseTypeMembersWriter.CanWriteMembers(instance, type)) { using (var baseNode = ownerDocument.CreateElement("base", parentNode)) { baseTypeMembersWriter.WriteMembers(instance, baseNode, type); } break; } } } }
public void Write(object instance, INodeWriter parentNode, Type referencedAsType) { var value = (double)instance; string valueString; if (value == double.MaxValue) { valueString = "max"; } else if (value == double.MinValue) { valueString = "min"; } else if (double.IsPositiveInfinity(value)) { valueString = "posinfinity"; } else if (double.IsNegativeInfinity(value)) { valueString = "neginfinity"; } else if (double.IsNaN(value)) { valueString = "nan"; } else { valueString = instance.ToString(); } using (var valueNode = ownerDocument.CreateElement("double", parentNode)) { valueNode.InnerText = valueString; } }