如何在构造函数中读取来自 属性 的 xml 评论?

how to read xml comment from Property in constructor?

public class MyClass {
    

    /// <summary>
    ///   My awesome class
    /// </summary>
    /// <param name="i_a">This is test of A</param>
    /// <param name="i_b">This is test of B</param>
    public MyClass(string i_a, string i_b){
      A = i_a;
      B = i_b;
    }

    /// <summary> This is test of A </summary>
    public string A {get;}

    /// <summary> This is test of B </summary>
    public string B {get;}

}

我想在 param 中添加与属性中相同的信息,当然,不要重复。我试过:

继承文档

创建实例时不显示文档。

/// <param name="i_a"><inheritdoc cref="A" select="summary" /></param>
/// <param name="i_b"><inheritdoc cref="B" select="summary" /></param>

见或另见 link

它创建一个 link 到 属性,以便可以导航到它。但这不是我想要的。

/// <param name="i_a"><see cref="A"/></param>
/// <param name="i_b"><see cref="B"/></param>

我的目标

我想在 class 的构造函数中查看参数的文档,而不需要重复代码注释。

var test = new MyClass() // start entering the parameters I want to see the documentation of each parameter.

有可能吗?

这是可能的。 inheritdoc 应该可以在任何地方使用。 inheritdoc:

的解决方案中有两个问题
  1. 属性 select="summary" 也选择 标签本身。并且它相对于当前 inheritdoc 位置搜索此标签。在您的例子中,它搜索 param/summary。请参阅我的工具的文档 VSdocman at https://www.helixoft.com/files/vsdocman/help/inheritdoc.html

所以正确的值应该是"/summary/node()".

  1. 我惊讶地发现 inheritdoc 标签现在使用 path 参数而不是旧的 select。似乎在某些情况下,VS Intellisense 支持这两个属性,而在某些情况下(包括 param 标记)仅识别 path

所以你的评论应该是:

/// <summary>
///   My awesome class.
///   Just a proof that old 'select' attribute works here.
///   <inheritdoc cref="A" select="/summary/node()" />
/// </summary>
/// <param name="i_a"><inheritdoc cref="A" path="/summary/node()" /></param>
/// <param name="i_b"><inheritdoc cref="B" path="/summary/node()" /></param>
public MyClass(string i_a, string i_b)
{
    A = i_a;
    B = i_b;
}