【问题标题】:Can I reference property comments in constructor comments?我可以在构造函数注释中引用属性注释吗?
【发布时间】:2015-12-08 06:41:46
【问题描述】:

如果我的类有一个通过构造函数分配的注释公共属性,我可以从同名的构造函数参数的描述中引用它的描述吗?

public class MyClass
{
    /// <summary>
    /// x description
    /// </summary>
    public int x { get; private set; }
    /// <summary>
    /// y description
    /// </summary>
    public int y { get; private set; }
    /// <summary>
    /// Constructor description
    /// </summary>
    /// <param name="x">How do I reference x description from here?</param>
    /// <param name="y">And y description?</param>
    public MyClass(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

【问题讨论】:

    标签: c# xml comments


    【解决方案1】:

    您不能包含描述,但您可以使用&lt;see&gt; 标签链接到属性文档。例如:

    <param name="x">The initial value for <see cref="x"/></param>
    

    顺便说一句,我强烈建议您遵循 .NET 命名约定,其中公共成员以大写字母开头。

    【讨论】:

    • 但是我还是想知道这个cref怎么用,我打开生成的xml,只看到x被替换成了x的全名。并且在智能中也没有看到“x 描述”。
    • @LeiYang:不,正如我所说,这不会包含描述 - 但是当您生成文档时,将有一个指向该属性的链接HTML。
    • 我相信这个答案已经过时(不确定何时)。我提供了一个方法作为单独的答案,它适用于 C# 9 甚至更早版本。
    【解决方案2】:

    这可以使用&lt;inheritdoc/&gt;,特别是通过使用可选的crefpath 属性来实现。

    注意:我不确定这是可用的语言或框架版本,它适用于我使用 .NET 5 / C# 9。如果有人使用起始版本,我可以编辑。

    参考:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags#inheritdoc

    对于您的示例(区别在于构造函数 XML cmets 上的 param 元素内):

    public class MyClass
    {
        /// <summary>
        /// x description
        /// </summary>
        public int x { get; private set; }
        /// <summary>
        /// y description
        /// </summary>
        public int y { get; private set; }
        /// <summary>
        /// Constructor description
        /// </summary>
        /// <param name="x"><inheritdoc cref="x" path='/summary'/></param>
        /// <param name="y"><inheritdoc cref="y" path='/summary'/></param>
        public MyClass(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }
    

    这将使构造函数参数从您的参数中继承摘要 cmets,从而减少冗余。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 2016-10-17
      • 2010-11-10
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多