public static TypeReference ReadTypeReference(XmlReader reader) { if (reader == null || reader.NodeType != XmlNodeType.Element) { return(null); } switch (reader.Name) { // For the TypeReference(s)... case "SimpleTypeReference": SimpleTypeReference simpleTypeReference = new SimpleTypeReference(); simpleTypeReference.ReadXml(reader); return(simpleTypeReference); case "SpecializedTypeReference": SpecializedTypeReference specializedTypeReference = new SpecializedTypeReference(); specializedTypeReference.ReadXml(reader); return(specializedTypeReference); case "ArrayTypeReference": ArrayTypeReference arrayTypeReference = new ArrayTypeReference(); arrayTypeReference.ReadXml(reader); return(arrayTypeReference); case "ReferenceTypeReference": ReferenceTypeReference referenceTypeReference = new ReferenceTypeReference(); referenceTypeReference.ReadXml(reader); return(referenceTypeReference); case "PointerTypeReference": PointerTypeReference pointerTypeReference = new PointerTypeReference(); pointerTypeReference.ReadXml(reader); return(pointerTypeReference); // For the TemplateTypeReference(s)... case "IndexedTemplateTypeReference": IndexedTemplateTypeReference indexedTemplateTypeReference = new IndexedTemplateTypeReference(); indexedTemplateTypeReference.ReadXml(reader); return(indexedTemplateTypeReference); case "NamedTemplateTypeReference": NamedTemplateTypeReference namedTemplateTypeReference = new NamedTemplateTypeReference(); namedTemplateTypeReference.ReadXml(reader); return(namedTemplateTypeReference); case "TypeTemplateTypeReference": TypeTemplateTypeReference typeTemplateTypeReference = new TypeTemplateTypeReference(); typeTemplateTypeReference.ReadXml(reader); return(typeTemplateTypeReference); case "MethodTemplateTypeReference": MethodTemplateTypeReference methodTemplateTypeReference = new MethodTemplateTypeReference(); methodTemplateTypeReference.ReadXml(reader); return(methodTemplateTypeReference); } return(null); }
protected override void OnReadXml(XmlReader reader) { base.OnReadXml(reader); // This reads only the target node... if (!String.Equals(reader.Name, "MemberTarget", StringComparison.OrdinalIgnoreCase)) { return; } name = reader.GetAttribute("name"); overload = reader.GetAttribute("overload"); XmlNodeType nodeType = XmlNodeType.None; while (reader.Read()) { nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { // Read the base contents in... if (String.Equals(reader.Name, "Target", StringComparison.OrdinalIgnoreCase)) { base.OnReadXml(reader); } else if (String.Equals(reader.Name, "SimpleTypeReference", StringComparison.OrdinalIgnoreCase)) { containingType = new SimpleTypeReference(); containingType.ReadXml(reader); } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "MemberTarget", StringComparison.OrdinalIgnoreCase)) { break; } } } }
protected override void OnReadXml(XmlReader reader) { base.OnReadXml(reader); // This reads only the target node... if (!String.Equals(reader.Name, "TypeTarget", StringComparison.OrdinalIgnoreCase)) { return; } name = reader.GetAttribute("name"); templates = new List <string>(); XmlNodeType nodeType = XmlNodeType.None; while (reader.Read()) { nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { // Read the base contents in... if (String.Equals(reader.Name, "Target", StringComparison.OrdinalIgnoreCase)) { base.OnReadXml(reader); } else if (String.Equals(reader.Name, "NamespaceReference", StringComparison.OrdinalIgnoreCase)) { containingNamespace = new NamespaceReference(); containingNamespace.ReadXml(reader); } else if (String.Equals(reader.Name, "SimpleTypeReference", StringComparison.OrdinalIgnoreCase)) { containingType = new SimpleTypeReference(); containingType.ReadXml(reader); } else if (String.Equals(reader.Name, "Templates", StringComparison.OrdinalIgnoreCase)) { while (reader.Read()) { nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { if (String.Equals(reader.Name, "Template", StringComparison.OrdinalIgnoreCase)) { templates.Add(reader.GetAttribute("value")); } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "Templates", StringComparison.OrdinalIgnoreCase)) { break; } } } } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "TypeTarget", StringComparison.OrdinalIgnoreCase)) { break; } } } }