这根本不是什么大事,但如果解决了,那将会非常有用。
当我重载方法等时,有时xml注释完全相同,有1或2个param名称。我必须将注释复制/粘贴到每个重载方法,它们是相同的。但是,有时候,如果我更新其中一个并忘记返回并将其复制/粘贴到所有其他方法,这可能会导致有关该方法的误导信息。如果有很多重载方法,这可能非常耗时并且容易出错。
所以我想知道是否有一种方法可以将注释存储在一个地方(比如变量),我可以简单地引用它。这样,一个变化将反映在所有相关的公司中。
以下是一个例子:
/// <summary>
/// Go and do something
/// </summary>
public void DoSomething()
{
DoSomething(true, "Done something");
}
/// <summary>
/// Go and do something
/// </summary>
/// <param name="doIt">whether it should be done or not</param>
public void DoSomething(bool doIt)
{
DoSomething(doIt, "Done something");
}
/// <summary>
/// Go and do something cool
/// </summary>
/// <param name="doIt">whether it should be done or not</param>
/// <param name="doneMessage">message to show once done</param>
public void DoSomething(bool doIt, string doneMessage)
{
if (doIt)
Console.WriteLine(doneMessage);
}
正如你所看到的,所有的评论是相同的,除了我决定对最后一个进行修正,以便“去做一些很酷的事情”。现在我必须去改变这是所有其他方法评论。
干杯。
答案 0 :(得分:3)
根据这些规范:
http://msdn.microsoft.com/en-us/library/5ast78ax.aspx
XML注释没有设定标准;该页面上显示的只是“推荐”。在推荐的标签中,没有这样的功能。但是,XML文档工具很乐意接受以下内容而没有任何警告:
/// <summary id="30">foo</summary>
void bar();
/// <summary id="30"/>
void bar(int baz);
这对您是否有用取决于您对编译器吐出的XML文件的具体操作。不幸的是,像Intellisense(代码完成和in-IDE工具提示等)。不会做任何事。
编辑:尝试<include>
,如http://msdn.microsoft.com/en-us/library/9h8dy30z.aspx中所述。它有点重量级,因为它需要一个单独的文件,但如果你的文档非常庞大,那就值得了。
答案 1 :(得分:2)
标准XML注释标记中没有此类函数。另一方面,Sandcastle Help File Builder实现了您正在寻找的<inheritdoc/>。
答案 2 :(得分:1)
如果你有一个界面,你可以参考其他方法中的一种方法,如:
interface ISomeInterface
{
/// <summary>Handles this and that.</summary>
void SomeMethod();
/// <summary><see cref="ISomeInterface.SomeMethod()"/></summary>
/// <param name="i">Param blabla.</param>
void SomeMethod(int i);
}
class SomeClass : ISomeInterface
{
/// <summary><see cref="ISomeInterface.SomeMethod()"/></summary>
public void SomeMethod() { }
/// <summary><see cref="ISomeInterface.SomeMethod(int)"/></summary>
public void SomeMethod(int i) { }
}
答案 3 :(得分:0)
叫我傻,但文档范围内的搜索和替换Go and do something
加上认真使用 Alt + R 或 Alt + A 可能会使这成为一个有争议的问题。一次编辑 - 好吧,至少输入一次。
@ Reinderien的回答是有用的......但在利用IntelliSense或标准处理工具的目标不是很有帮助。
@Peter Lillevold的答案也是内容丰富而且我觉得它更冷,因为它说SHFB处理......但仍然没有智能感知。
@Paw Baltzersen的答案可以被使用而不管使用界面并且很诱人......但是也没有使IntelliSense正确。
我喜欢在可能的情况下避免搜索和替换,但在这里获取IntelliSense通常是我的第一个问题。