/// <summary> /// Infers documentation by reading any Doc attributes found in the /// specified assembly as well as reading the xml documentation file /// if it exists /// </summary> /// <param name="assembly"></param> /// <param name="precedence"></param> /// <returns></returns> public static Dictionary <string, List <DocInfo> > Infer(Assembly assembly, DocumentationPrecedence precedence = DocumentationPrecedence.Xml) { Args.ThrowIfNull(assembly, "assembly"); Dictionary <string, List <DocInfo> > results = new Dictionary <string, List <DocInfo> >(); Infer(results, assembly, precedence); return(results); }
public static void AddDocInfos(Dictionary <string, List <DocInfo> > results, FileInfo xmlFile, DocumentationPrecedence precedence = DocumentationPrecedence.Xml) { if (TryFromXmlFile(xmlFile, out Dictionary <string, List <DocInfo> > xmlResults)) { xmlResults.Keys.Each(typeName => { if ((results.ContainsKey(typeName) && precedence == DocumentationPrecedence.Xml) || !results.ContainsKey(typeName)) { if (!results.ContainsKey(typeName)) { results.Add(typeName, new List <DocInfo>()); } results[typeName].AddRange(xmlResults[typeName]); } }); } }
public static void Infer(Dictionary <string, List <DocInfo> > results, Assembly assembly, DocumentationPrecedence precedence = DocumentationPrecedence.Xml) { FileInfo assemblyFileInfo = new FileInfo(assembly.Location); assembly.GetTypes().Each(type => { AddDocInfos(results, type); }); string name = Path.GetFileNameWithoutExtension(assemblyFileInfo.FullName); string xmlFilePath = Path.Combine(assemblyFileInfo.Directory.FullName, $"{name}.xml"); FileInfo xmlFile = new FileInfo(xmlFilePath); if (xmlFile.Exists) { AddDocInfos(results, xmlFile, precedence); } }