C# 将常量呈现到XML文档中?

C# 将常量呈现到XML文档中?,c#,visual-studio,xml-documentation,C#,Visual Studio,Xml Documentation,我有两个私有常量和一个公共方法: private const byte _minAge = 24; private const byte _maxAge = 29; public bool IsInAgeRange() { ... } 我正在添加XML文档,如果我的代码的用户能够在IntelliSense中阅读此文档,我会非常高兴:检查年龄是否在允许的范围内(24到29岁)。 我的问题是: 有没有办法将常量呈现到XML文档中 我提出的备选方案有: 只需在文档中写入24和29(缺少对实际值的

我有两个私有常量和一个公共方法:

private const byte _minAge = 24;
private const byte _maxAge = 29;

public bool IsInAgeRange() { ... }
我正在添加XML文档,如果我的代码的用户能够在IntelliSense中阅读此文档,我会非常高兴:
检查年龄是否在允许的范围内(24到29岁)。

我的问题是: 有没有办法将常量呈现到XML文档中


我提出的备选方案有:

  • 只需在文档中写入24和29(缺少对实际值的依赖性)
  • 将常量公开并添加
    (减少封装并减少文档的信息量)

  • 我不认为有任何方法可以在文档中写入常量
    \u minAge
    \u maxAge
    的实际值,但您可以使用
    标记参考它们,如下所示:

    /// <summary>
    /// Checks whether the age is within the allowed range (between <see cref="_minAge" /> and <see cref="_maxAge" />).
    /// </summary>
    
    //
    ///检查年龄是否在允许的范围内(介于和之间)。
    /// 
    

    现在,这将在您的文档中创建指向这些常量的链接,这样,当您生成文档并稍后呈现它们时,用户将能够单击这些链接并参考相应的常量。

    为包含该值的每个常量添加摘要,然后参考这些注释:

    /// <summary>24</summary>
    private const byte _minAge = 24;
    /// <summary>29</summary>
    private const byte _maxAge = 29;
    
    /// <summary>Checks whether the age is within the allowed range (between <inheritdoc cref="_minAge"/> and <inheritdoc cref="_maxAge"/>).</summary>
    public bool IsInAgeRange() { ... }
    
    ///24
    私有常量字节_minAge=24;
    /// 29
    私有常量字节_maxAge=29;
    ///检查年龄是否在允许的范围内(介于和之间)。
    公共bool isnagerange(){…}
    

    我知道这仍然是重复的,但这样你可以将你的常量注释保留在常量附近,如果常量完全在另一个文件中定义。

    这结合了@kalu93的答案和@DhyMik的注释,展示了如何在
    标记和
    标记中使用

    ///24
    私有常量字节_minAge=24;
    /// 29
    私有常量字节_maxAge=29;
    /// 
    ///检查年龄是否在允许范围内
    ///(在和之间)。
    /// 
    /// 
    ///年龄(必须介于和之间
    /// ).
    /// 
    公共图书馆管理范围(内页){
    
    return\u minAge你似乎在重复我在备选方案2中提到的内容;见缺点thereHa,好吧,既然我在你编辑你的问题之前回答了,我可以说你重复了我在回答中写的内容:p底部总是在那里,编辑只是拼写错误奇怪……一定没有注意到对不起。无论如何,我这是我知道的唯一解决方案。我认为如果注释与私有的
    常量在同一个类中,它应该可以工作,而不必将它们公开?是的,我想这不起作用。但是你可以问自己,当
    为托管范围()时,为什么常量是私有的
    是公共的吗?为什么用户可以验证对象的年龄,但不知道在什么条件下它才被认为是有效的?我想知道同样的情况,因为它在JavaDoc中是可能的。但在.net的文档中似乎是不可能的?(你(或其他人)有吗)为C#创建了功能请求?如果是,请在此处添加链接。如果不是,我建议您创建一个。被认为是“迄今为止最好的解决方法”:谢谢!亲爱的读者,如果本机支持它,请发布一个新的答案,我将重新评估。对于其他尝试此功能的人,请注意,它只在
    标记中起作用。我在
    标记的文本中尝试了它,但它不起作用。此外,如果您使用Swagger来记录ASP.NET Web API,请使用
    标记无法正常工作(XML是逐字呈现的,而不是呈现实际继承的文档-参见此).@EricMutta当在标记内部使用
    且仅指定cref但未指定路径值时,默认情况下
    将仅引用ref目标中的相同标记。因此,如果在
    标记内部使用
    标记,则仅使用ref目标的相同
    标记的内容。如果您要引用在@kalu93的答案中,从
    标记中选择ref目标的summary标记的内容,使用
    。path选项使用XPath符号选择引用的目标。我建议使用
    标记,而不是将数字放在
    标记中。它更具语义,并保留了e
    标记以获取更多相关内容。然后可以使用
    @DhyMik引用该值。感谢您的提示!我添加了一个答案,将您的提示与@kalu93的答案结合起来。对于可能错过
    路径
    属性的任何其他人,它实际上已记录在(完成示例后,向下滚动到该链接中的
    inheritationryreturns
    类)。