2010-06-22 49 views
6

这根本不是什么大问题,但如果解决的话确实非常有用。有没有办法引用xml注释以避免重复它们?

当我重载方法等时,有时候xml注释完全相同,bar 1或2 param名称。我必须将注释复制/粘贴到每个重载的方法,它们都是相同的。然而,有时候,如果我更新其中一个方法并且忘记返回并将其复制/粘贴到其他所有方法,这可能会导致有关该方法的误导性信息。如果有很多重载方法,这可能非常耗时且容易出错。

所以我想知道是否有一种方式存储评论在一个地方(如变量),我可以简单地引用。这样,所有相关commetns中都会反映出一个变化。

下面是一个例子:

/// <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

+1我总是不敢问这个问题。 – 2010-06-22 09:11:33

+0

@彼得 - 公平点,是的,我一直非常废话。我会对它进行排序,欢呼声 – HAdes 2010-06-22 09:21:57

+0

事情是这样,人们会停止回答你的问题......你不想这样:)或者我错了,你有三个答案。 – 2010-06-22 09:45:43

回答

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

如果你有一个接口,你可以参考来自其他方法的方法之一,是这样的:

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) { } 
} 
0

叫我傻,但一个文件范围的搜索和替换为Go and do something加上兢兢业业使用替代方案 + R替代方案 + A可能会使这一点成为一个争议点。一个编辑 - 至少,键入一次。

@ Reinderien的答案是丰富的......但在利用IntelliSense或标准处理工具是目标的情况下,这些答案不是很有用。

@彼得Lillevold的答案是信息也太冷,我觉得它说话SHFB处理...但仍然没有智能感知。

@Paw Baltzersen的答案可以采用,而不考虑使用接口,并且很诱人...但是也没有得到IntelliSense的权利。

我喜欢避免搜索并在可能的情况下进行替换,但在这里获得智能感知一般是我的首要关注点。

相关问题