如何用相同的 XML 注释记录重载方法?
Posted
技术标签:
【中文标题】如何用相同的 XML 注释记录重载方法?【英文标题】:How to document overloaded methods with the same XML comments? 【发布时间】:2020-04-22 20:23:24 【问题描述】:我知道有这样的问题,但它们已经过时了。所以我正在创建一个新的。
目前有 3 个重载方法我必须这样做:
/// <summary>
/// Description that described summary of an overloaded method.
/// </summary>
/// <param name="fileName">Description that describes filename parameter</param>
/// <param name="options">Description that describes options parameter</param>
/// <returns>Description of what method returns</returns>
public bool ReadFrom(string fileName, ReaderOptions options = null)
return false;
/// <summary>
/// Description that described summary of an overloaded method.
/// </summary>
/// <param name="stream">Description that describes stream parameter</param>
/// <param name="options">Description that describes options parameter</param>
/// <returns>Description of what method returns</returns>
public bool ReadFrom(Stream stream, ReaderOptions options = null)
return false;
/// <summary>
/// Description that described summary of an overloaded method.
/// </summary>
/// <param name="rawData">Description that describes rawData parameter</param>
/// <param name="options">Description that describes options parameter</param>
/// <returns>Description of what method returns</returns>
public bool ReadFrom(byte[] rawData, ReaderOptions options = null)
return false;
我想要这样的东西:
#region overloadedReadFromMethods
/// <summary>
/// Description that described summary of an overloaded method.
/// </summary>
/// <param name="fileName">Description that describes filename parameter</param>
/// <param name="options">Description that describes options parameter</param>
/// <returns>Description of what method returns</returns>
public bool ReadFrom(string fileName, ReaderOptions options = null)
return false;
/// <param name="stream">Description that describes stream parameter</param>
public bool ReadFrom(Stream stream, ReaderOptions options = null)
return false;
/// <param name="rawData">Description that describes rawData parameter</param>
/// <returns>Even considering that returns tag is present on the first overloaded method,
/// this overloaded method shows this specific description.
/// </returns>
public bool ReadFrom(byte[] rawData, ReaderOptions options = null)
return false;
#endregion overloadedReadFromMethods
所以第一个重载的方法描述了默认描述,然后下面的方法可以用自己的描述覆盖它。我希望它显示在 Visual Studio 的 IntelliSense 中。
【问题讨论】:
【参考方案1】:我认为记录每种方法的额外工作是必要的,因为它们都有不同的签名。方法有不同<param></param>
InheritDoc是一个可以用来继承xml文档的包。
【讨论】:
谢谢。安装额外的包对我来说不是问题。我正在记录它以供其他人将来使用(Github 存储库),并在我忘记时为我自己使用。他们可能不会在他们的个人电脑上安装它。我猜它对于编译的模块会很好地工作,但是对于没有 InheritDoc 的贡献者,它仍然不会显示重载的描述,对吧?【参考方案2】:TLDR - 这是不可能的
长话短说,就像过去一样,您仍然不能以这种方式重用 cmets。
Some interesting ideas here
使用可选参数创建一个函数。虽然这会缓解问题,但我发现可选参数有时本身并不方便,因为它们使内部逻辑过于复杂并使单元测试变得非常困难。在你的情况下重载是有道理的,所以这个解决方案不适用。
使用<overloads>
注释。我在官方文档中看不到它
使用<see>
和<seealso>
xml标签来使用参考
使用<include>
标签
这仍然不是一个解决方案,但它允许您拥有单独的 xml 文档并进行整体处理。 include documentation
【讨论】:
谢谢。我阅读了关于以上是关于如何用相同的 XML 注释记录重载方法?的主要内容,如果未能解决你的问题,请参考以下文章
是否有关于如何用注释记录 JavaScript 文件的约定?像函数签名、示例等