public void LoadTypesMembers(Type t, bool forceReload) { if (!forceReload && t.Members.Count > 0) { return; } FileInfo typeXmlFile = XmlFiles.Find( file => file.Name.Remove(file.Name.LastIndexOf(file.Extension)) == t.ID); if (typeXmlFile == null || !typeXmlFile.Exists) { return; } XmlDocument typeDoc = new XmlDocument(); typeDoc.Load(typeXmlFile.FullName); t.Description = typeDoc.SelectSingleNode("/doxygen/compounddef/detaileddescription").InnerXml.Replace("preformatted", "pre"); XmlNodeList baseTypes = typeDoc.SelectNodes("/doxygen/compounddef/basecompoundref"); if (baseTypes != null) { foreach (XmlNode baseType in baseTypes) { t.BaseTypes.Add(baseType.Attributes["refid"].Value); } } XmlNodeList members = typeDoc.SelectNodes("/doxygen/compounddef/sectiondef/memberdef"); if (members == null) { return; } foreach (XmlNode member in members) { string kind = member.Attributes["kind"].Value; string name = GetElementInnerText(member, "name"); string args = GetElementInnerText(member, "argsstring").Replace("(", "").Replace(")", "").Trim(); List <Parameter> parameters = new List <Parameter>(); if (!string.IsNullOrEmpty(args) && kind == "function") { string[] argsSplits = args.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string arg in argsSplits) { string[] argParts = arg.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); Parameter p = new Parameter { Type = argParts[0].Trim(), Name = argParts[1].Trim() }; parameters.Add(p); } } if (kind == "function" && name == t.Name) { kind = "ctor"; } Member m = CreateNewMember(kind); if (parameters.Count > 0) { ((Method)m).Parameters = parameters; } m.ID = member.Attributes["id"].Value; m.FullName = string.Format("{0}.{1}", t.FullName, name); m.Name = name; m.Kind = kind; m.Description = GetElementInnerXml(member, "detaileddescription").Replace("preformatted", "pre"); m.AccessModifier = member.Attributes["prot"].Value; m.Parent = t; m.ReturnType = GetElementInnerText(member, "type"); if (m.ReturnType.EndsWith(".")) { m.ReturnType += m.Name; } t.Members.Add(m); } }