C#,XmlDoc:如何引用方法重载

32

如果我有以下两个方法:

public Foo Get(string bar) { ... }
public Foo Get(int bar) { ... }

并将这段XML文档注释写在另一个方法上

/// <summary>
/// Has a close relation to the <see cref="Get"/> methods.
/// </summary>

我在Get下面看到了一个蓝色的波浪线,提示这是一个模糊引用"Get"。尽管如此,我仍希望它可以同时引用两个。正确的做法是什么?或者说我只能引用单个方法重载?


可能是重复的问题,参考如何在C#的<seealso>标签中创建对方法重载的cref? - binki
2个回答

30

请尝试

/// Has a close relation to the <see cref="Get(string)"/>  
/// and <see cref="Get(int)" /> methods.

你可能需要完整的类型名称,但一旦你输入第一个括号,智能感知应该会帮助你。

希望有所帮助,

Dan


1
确实!但是,如果您有很多重载,那可能是一种提示,告诉您需要进行重构。祝好,丹 - Daniel Elliott
5
我希望有一种方法可以做到原始问题的目的。虽然这种方法在没有更好的方法的情况下是实用的,但它也很粗糙,因为参数列表是一个_实现细节_,与实际要表达的内容无关。如果在以后的某个时间添加了第三个重载并忘记了这个注释,它会错误地暗示该注释不适用于新的重载,而实际上它可能适用。(我认为我见过更接近的方法,但不幸的是我记不起来了。) - Kevin

3

以下是对这个旧问题的最新回答。我不确定这个方法何时变得有效,因为没有太多的文档资料。如果你将cref属性前缀加上"o:...",例如:"o:myMethod()"它将链接到重载部分,并涵盖该方法的所有重载。使用Daniel Elliott的答案示例:

/// Has a close relation to the <see cref="o:Get()"/> methods.  

这也会消除Intellisense/Resharper关于模糊引用的警告。

我注意到当我这样做时,应用方法的 IntelliSense 弹出窗口不再对 <see /> 内容进行语法颜色标记。我也失去了该方法存在的警告 - 所以我不确定这是否是一个好的解决方案。 - Dai
1
不确定你从哪里获得这个代码,但在 VS Community 的 16.4.5 版本中似乎无法正常工作。它只是显示为文本,并且与完全跳过 see 标签没有任何区别。 - Krzaku
在VS2019中使用前缀会生成CA1200 - RedX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接