private string GetMethodResponse(XElement element, string name, out ClassInfo returnType) { returnType = null; XElement node = (XElement)element.NextNode; if (node == null) { return(null); } XAttribute attribute = node.Attributes().FirstOrDefault(x => x.Name.LocalName.Equals("name")); if (attribute != null && attribute.Value == name + "Response") { string className = name + "Response"; if (BaseClassInfo.SkipMethods.Contains(className)) { return(null); } BaseClassInfo.SkipMethods.Add(className); List <XElement> elements = new List <XElement>(); FindAllElements(node, elements); if (elements.Count > 1) { StringBuilder classBuilder = new StringBuilder(); ClassInfo classInfo = new ClassInfo() { Name = className }; foreach (XElement item in elements) { classInfo.PropertyInfoes.Add(new PropertyInfo() { ReturnType = CleanType(item.Attribute("type").Value), Name = item.Attribute("name").Value }); } ClassesGenerated.Add(classInfo); returnType = classInfo; return(className); } else if (elements.Count == 1) { XElement first = elements.First(); return(CleanType(first.Attribute("type").Value)); } else { return("void"); } } return("void"); }
public List <ClassInfo> Generate(string url) { using (WebClient client = new WebClient()) { XDocument doc = XDocument.Parse(client.DownloadString(url)); string className = doc.Elements().FirstOrDefault().Attribute("name").Value; BaseClassInfo = new ClassInfo() { Name = className, TargetNameSpace = doc.Elements().FirstOrDefault().Attribute("targetNamespace").Value, Url = url.Substring(0, url.LastIndexOf("wsdl", StringComparison.OrdinalIgnoreCase)) + "service" }; ClassesGenerated.Add(BaseClassInfo); XmlReader(doc); return(ClassesGenerated); } }