能否从特定的参数继承文档呢?

24

Visual Studio 2017,ReSharper 2017,C# 项目

我试图使用 select 属性继承方法参数的文档,但它似乎并没有按预期工作。

根据这篇文章(http://tunnelvisionlabs.github.io/SHFB/docs-master/SandcastleBuilder/html/79897974-ffc9-4b84-91a5-e50c66a0221d.htm),可以使用 select 属性来过滤文档,并且其中的一个示例显示了如何使用:

 /// <example>
 /// <inheritdoc cref="MethodWithTwoExamples"
 ///     select="span[@id='Example 2']" />
 /// </example>

因此,我试图以类似的方式过滤文档:

/// <param name="generateStream"><inheritdoc cref="MyClass.MyMethod" select="param[@name='generateStream']"/></param>
但问题在于,Visul Studio Intellisense无法显示特定参数的文档,而是显示我试图继承文档的方法的第一个参数的文档。
所以我的问题是:是否可以将文档过滤到方法的特定参数?

1
请查看VS 2017文档注释推荐标签文档:https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/recommended-tags-for-documentation-comments。很抱歉,没有类似“inheritdoc”的标签,希望您能尝试其他标签,如<see>,它也可以提供有用的信息。 - Sara Liu - MSFT
@SaraLiu-MSFT <inheritdoc/> 目前在您链接的页面上(标题为“重用文档”) - 我猜测这些文档是在您2017年发布后更新的? - Dai
2个回答

43
你所询问的问题可以使用Visual Studio 2019(16.9.3)来解决。我自己也遇到了同样的问题,这里有一篇讨论:

https://github.com/doxygen/doxygen/issues/7356/#issuecomment-547905295

它向我指出了正确的方向。

  • 首先,由于select已被弃用,你必须使用path代替。

  • 其次,你必须在XPath部分前加上斜杠(/),使你的XML文档看起来像这样:

    /// <param name="generateStream"><inheritdoc cref="MyClass.MyMethod" path="/param[@name='generateStream']"/></param>
    

4
Upvoted和imho可能应标记为被接受的答案。我意识到OP要求VS2017(根据评论,它显然不支持inheritdoc),但除此之外,它为我提供了我需要的信息,并且在MS文档中找不到。 - Mark
我正在尝试在<param name="">元素内使用<inheritdoc>,但引用的是一个属性(而不是参数)-所以我需要的XML是这样的:/// <param name="paramName"><inheritdoc cref="ClassName.PropertyName" path="/summary"/></param>,它在VS 2019 v16.11.26中可以正常工作,感谢! - Dai

0

我认为无法在IntelliSense中显示继承的文档,由于这个UserVoice项目here


1
那篇文章可以追溯到2013年,我不知道自那时以来发生了什么变化,但是文档继承肯定是有效的,我经常使用它,只是在过滤时遇到了一些问题,因为“select”属性似乎被忽略了。 - IneedHelp
@IneedHelp 我现在在使用VS2017,但好像无法正常工作。当使用/// <inheritdoc/>时,工具提示没有显示任何摘要信息。 - Douglas Gaskell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接