public static ApiEntry Create(MemberInfo memberInfo, XDocument documentation) { var instance = CreateInstance(memberInfo); if (instance == null) { return(null); } var doc = documentation?.XPathSelectElement($"/doc/members/member[@name='{instance.XmlDocKey}']"); instance.Documentation = XmlDoc.Generate(doc); return(instance); }
ApiEntry CreateEntry(MemberInfo memberInfo) { var entry = ApiEntry.Create(this, _whitelist, memberInfo); if (entry == null) { return(null); } string docFileName = null; if (memberInfo is Type type) { if (type.IsGenericType) { type = type.GetGenericTypeDefinition(); } docFileName = Path.ChangeExtension(new Uri(type.Assembly.CodeBase).LocalPath, "xml"); } else { type = memberInfo.DeclaringType; if (type?.IsGenericType ?? false) { type = type.GetGenericTypeDefinition(); } var codeBase = type?.Assembly.CodeBase; if (codeBase != null) { docFileName = Path.ChangeExtension(new Uri(codeBase).LocalPath, "xml"); } } if (docFileName != null) { if (!_documentationCache.TryGetValue(docFileName, out var documentation)) { _documentationCache[docFileName] = documentation = File.Exists(docFileName) ? XDocument.Load(docFileName) : null; } var doc = documentation?.XPathSelectElement($"/doc/members/member[@name='{entry.XmlDocKey}']"); entry.Documentation = XmlDoc.Generate(doc); } return(entry); }