2010-06-22 80 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的權利。

我喜歡避免搜索並在可能的情況下進行替換,但在這裏獲得智能感知一般是我的首要關注點。

相關問題