From 0941c44a880b092e209bf7b10875ce9ba2d89160 Mon Sep 17 00:00:00 2001 From: hnx8 Date: Sun, 25 Apr 2021 13:57:16 +0900 Subject: [PATCH] Improved for overloaded methods If the method is overridden, the one with the same argument name will be adopted first. --- MarkdownGenerator.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/MarkdownGenerator.cs b/MarkdownGenerator.cs index f3e2fee..4e8ae0b 100644 --- a/MarkdownGenerator.cs +++ b/MarkdownGenerator.cs @@ -141,7 +141,15 @@ void BuildTable(MarkdownBuilder mb, string label, T[] array, IEnumerable { - var summary = docs.FirstOrDefault(x => x.MemberName == name(item2) || x.MemberName.StartsWith(name(item2) + "`"))?.Summary ?? ""; + var candidates = docs.Where(x => x.MemberName == name(item2) || x.MemberName.StartsWith(name(item2) + "`")).ToArray(); + if (candidates.Count() >= 2 && item2 is MethodBase) + { + // Attempt to identify method overloads + var methodParameterNames = (item2 as MethodBase).GetParameters().Select(p => p.Name); + var overloadCandidates = candidates.Where(x => x.Parameters.Keys.SequenceEqual(methodParameterNames)).ToArray(); + if (overloadCandidates.Any()) { candidates = overloadCandidates; } + } + var summary = candidates.FirstOrDefault()?.Summary ?? ""; return new[] { MarkdownBuilder.MarkdownCodeQuote(type(item2)), finalName(item2), summary }; });