private void StartNode(object value) { if (value == null) { Console.Write("NULL"); } Type type = value != null?value.GetType() : typeof(object); foreach (Alias alias in aliases) { string nodeAlias; if (alias.TryGetAlias(type, out nodeAlias)) { writer.StartNode(nodeAlias); return; } } // TODO: Look into refactoring the Xmlifier to be more cross-platform friendly if (value is IList) { writer.StartNode("list"); } else if (value is String) { writer.StartNode("string"); } else { writer.StartNode(Xmlifier.XmlifyNode(type)); } // classType is not valid for cross platform usage //writer.WriteAttribute(Attributes.classType, type.AssemblyQualifiedName); }
private void StartNode(object value) { Type type = value != null?value.GetType() : typeof(object); foreach (Alias alias in aliases) { string nodeAlias; if (alias.TryGetAlias(type, out nodeAlias)) { writer.StartNode(nodeAlias); return; } } writer.StartNode(Xmlifier.XmlifyNode(type)); writer.WriteAttribute(Attributes.classType, type.AssemblyQualifiedName); }
private object ConvertField(Type fieldType) { string classAttribute = reader.GetAttribute(Attributes.classType); if (!string.IsNullOrEmpty(classAttribute)) { fieldType = Type.GetType(Xmlifier.UnXmlify(classAttribute)); } Converter converter = converterLookup.GetConverter(fieldType); if (converter != null) { return(converter.FromXml(reader, context)); } else { return(Unmarshal(fieldType)); } }