C# 中位置记录属性的文档注释

问题描述 投票:0回答:3

如果我有这样的位置记录:

public record Version(int Major, int Minor);

好像只能提供一个

<summary>
文档,像这样:

/// <summary>
/// Version record
/// </summary>
public record Version(int Major, int Minor);

是否可以在保持简短记录语法的同时记录

Major
Minor
属性(也可能是构造函数参数)?

c# record xml-comments c#-9.0
3个回答
16
投票

从 .NET 6.0.300 及更高版本开始,主构造函数上的“参数”文档现在会自动传播到属性上的“摘要”文档。

下面的原始答案。


正如 canton7 指出的那样,这是仍在开发中.

现在记录属性和参数的最佳解决方法是明确定义属性,同时保持记录位置:

/// <summary>
/// Version record
/// </summary>
/// <param name="Major">Major constructor parameter</param>
/// <param name="Minor">Minor constructor paramater</param>
public record Version(int Major, int Minor)
{
    /// <summary>
    /// Major Property
    /// </summary>
    public int Major { get; init; } = Major;

    /// <summary>
    /// Minor property
    /// </summary>
    public int Minor { get; init; } = Minor;
}

这比自己定义构造函数略短,但更有用,一旦添加了支持,您就可以将文档移至主构造函数,同时知道这不会以任何方式更改生成的代码。如果你想从另一个位置记录继承,也有必要这样做。


1
投票

你可以这样记录它:

/// <summary>
/// Version record
/// </summary>
/// <param name="Major">Major version</param>
/// <param name="Minor">Minor version</param>
public record Version(int Major, int Minor);

然后您在代码中使用它时拥有文档:


1
投票

从 .NET SDK 6.0.300 和 Visual Studio 2022 版本 17.2 开始,这是通过使用

<param name="property-name">parameter summary</param>
标签完成的。因此,以下将实现预期的结果:

/// <summary>
/// Version record
/// </summary>
/// <param name="Major">Major version</param>
/// <param name="Minor">Minor version</param>
public record Version(int Major, int Minor);
© www.soinside.com 2019 - 2024. All rights reserved.