Last active
August 29, 2015 14:14
-
-
Save hediet/4cc564377964ba5184c9 to your computer and use it in GitHub Desktop.
DocumentationProvider using NuDoc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace Hediet.Reflection | |
{ | |
interface IDocumentationProvider | |
{ | |
string GetDocumentationText(MemberInfo memberInfo); | |
string GetDocumentationText(ParameterInfo memberInfo); | |
} | |
class XmlDocumentationProvider : IDocumentationProvider | |
{ | |
private readonly Dictionary<MemberInfo, Member> documentation = new Dictionary<MemberInfo, Member>(); | |
private Member GetXmlDocumentation(MemberInfo memberInfo) | |
{ | |
Member member; | |
if (!documentation.TryGetValue(memberInfo, out member)) | |
{ | |
var r = DocReader.Read(memberInfo.Module.Assembly); | |
foreach (var element in r.Elements.OfType<Member>()) | |
{ | |
if (memberInfo == element.Info) | |
{ | |
member = element; | |
break; | |
} | |
} | |
documentation.Add(memberInfo, member); | |
} | |
return member; | |
} | |
public string GetDocumentationText(MemberInfo memberInfo) | |
{ | |
var member = GetXmlDocumentation(memberInfo); | |
if (member == null) | |
return null; | |
var summary = member.Elements.OfType<Summary>().FirstOrDefault(); | |
if (summary == null) | |
return null; | |
return summary.ToText(); | |
} | |
public string GetDocumentationText(ParameterInfo parameterInfo) | |
{ | |
var member = GetXmlDocumentation(parameterInfo.Member); | |
if (member == null) | |
return null; | |
var summary = member.Elements.OfType<Param>().FirstOrDefault(p => p.Name == parameterInfo.Name); | |
if (summary == null) | |
return null; | |
return summary.ToText(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment