C# 我可以使用<;国际信用证>;引用另一个变量的XML摘要?
当我为我的项目编写函数,更具体地说,是它们的XML文档注释时,我发现自己经常重复特定参数的注释。这有时会导致误导性文档(如复制粘贴通常所做的…) 这是我想到的一个简单的例子,它代表了真正的问题C# 我可以使用<;国际信用证>;引用另一个变量的XML摘要?,c#,visual-studio,documentation,inheritdoc,C#,Visual Studio,Documentation,Inheritdoc,当我为我的项目编写函数,更具体地说,是它们的XML文档注释时,我发现自己经常重复特定参数的注释。这有时会导致误导性文档(如复制粘贴通常所做的…) 这是我想到的一个简单的例子,它代表了真正的问题 /// <summary> /// The number that should be doubled /// </summary> private static float myNumber = 10f; /// <summary> /// Multiplies a
/// <summary>
/// The number that should be doubled
/// </summary>
private static float myNumber = 10f;
/// <summary>
/// Multiplies a number by 2
/// </summary>
/// <param name="number"><inheritdoc cref="myNumber"/></param>
/// <returns>The number multiplied by 2</returns>
private static float MultiplyByTwo(float number)
{
return number * 2f;
}
//
///应该加倍的数字
///
私有静态浮点myNumber=10f;
///
///将一个数字乘以2
///
///
///这个数字乘以2
专用静态浮点乘法two(浮点数)
{
返回编号*2f;
}
在这一行中,我想要文本“应该加倍的数字”,但它没有显示出来。也许我不完全理解inheritdoc的用法
我出现的意思是这个。Visual Studio应在该框中显示number
的文档:
这就是它的外观(无需复制粘贴文本):
那么,有没有一种方法可以在XML文档注释中引用不同的变量呢?在Visual Studio 16.8.4中,我可以使用
的路径
属性来实现这一点
/// <summary>
/// The number that should be doubled
/// </summary>
private static float myNumber = 10f;
/// <summary>
/// Multiplies a number by 2
/// </summary>
/// <param name="number"><inheritdoc cref="myNumber" path="/summary"/></param>
/// <returns></returns>
private static float MultiplyByTwo(float number)
{
return number * 2f;
}
通常,当以这种方式对TryExample
方法使用
时,它会显示它可能抛出InvalidOperationException
。使用path
属性,我对其进行了筛选,以便只继承与exception
名称不匹配的节点
/
:匹配根节点
*
:匹配任何子节点
[
和]
:匹配满足所包含谓词条件的任何节点
not()
:匹配括号内不满足表达式条件的任何节点
self::exception
:如果当前节点的名称为exception
,则与该节点匹配
结果如下:
只能从基类、接口和类似方法继承XML注释。啊,这就是我担心的。所以除了复制粘贴没有别的方法了?
/// <summary>
/// This throws!
/// </summary>
/// <param name="param1">This is a parameter.</param>
/// <param name="param2">This is another parameter!</param>
/// <exception cref="InvalidOperationException"/>
public string ExampleThatCanThrow(int param1, float param2)
{
throw new InvalidOperationException();
}
/// <summary>
/// This never throws!
/// </summary>
/// <inheritdoc cref="ExampleThatCanThrow(int, float)" path="/*[not(self::exception)]"/>
public bool TryExample(int param1, float param2, out string? result)
{
result = "No throwing here!";
return true;
}