7

在我的源代码文档中,我经常使用:

Get a <see cref="Quote"/> for the specified <see cref="apiOrder"/> object.

这很好地转换为 XmlDocument.xml 中的以下字符串,其中包含已编译的 Web api 帮助页面。

Get a <see cref="T:Supertext.API.POCO.Quote"/> for the specified <see cref="!:apiOrder"/> object.

但由于某些原因,所有这些引用都没有显示。我们得到的是这样的:

Get a  for the specified  object

我们找到了一些来源,但似乎没有任何效果。没有帮助:
Web Api 帮助页面 - 不要在 xml 文档中转义 html

过时的: http:
//thesoftwaredudeblog.wordpress.com/2014/01/04/using-microsoft-asp-net-web-api-2-help-page-part-2/

有任何想法吗?

4

1 回答 1

4

在 WebAPI 2 帮助中,有一个名为XmlDocumentationProvider. 在这个类中有一个名为的方法,GetTagValue它处理 Summary 和 Returns 标记。还有一个名为GetDocumentation(有多个,但它是带有HttpParameterDescriptor参数的)的方法来处理 Param 标记。

我编写了一个函数,该函数使用 RegEx 查找所有“See Cref”并将它们替换为找到的最后一个对象名称。

正则表达式:

private static Regex SeeCodeReferenceRegEx = new Regex("<see cref=\\\"\\w:([\\w]+\\.)*(\\w+)\\\" */>", RegexOptions.Compiled);

功能:

private static string CleanValue(string value)
{
    value = value.Trim();
    var matches = SeeCodeReferenceRegEx.Matches(value);
    foreach (Match match in matches)
        value = value.Replace(match.Groups[0].Value, match.Groups[2].Value);
    return value;
}

GetTagValue中,替换:

return node.Value.Trim();

和:

return CleanValue(node.InnerXml);

GetDocumentation替换:

return parameterNode.Value.Trim();

和:

return CleanValue(parameterNode.InnerXml);
于 2016-05-12T20:57:28.333 回答