2009-01-07 26 views
22

我在MSDN鏈接中看到如「CompareOrdinal Overloads」。我如何在C#中編寫這樣的鏈接?如何在C#中的<seealso>標記中創建方法重載?

我想:

<seealso cref="MyMethod">MyMethod Overloads</seealso> 

但是,編譯器給了我一個關於是對於具有其他重載方法不明確的引用警告。

(初級問題:我是不是真的需要寫這個標籤鏈接到重載,抑或是自動文檔處理器產生的?)

回答

4

Xml文檔沒有引用方法的所有重載的方法。

C#項目最流行的文檔生成器是Sandcastle。如有必要,它會自動創建一個鏈接到重載列表頁面。因此,在成員列表頁面中,重載方法的名稱只會出現一次,點擊它將導航到該方法的重載頁面列表,並從那裏到特定的重載。

在Xml文檔中放置一個到重載列表頁面的鏈接需要熟悉正在使用的外部工具,可能不是一個好主意。

如果你真的必須有這個,那麼也許有一種方法是使用具有特定形式的ID的錨點。大多數文檔生成器提供了一些前置或後置處理生成文件的神祕手段,並且應該讓您有機會選擇這些錨點併爲它們提供適當的href。

OTH,可能超過其價值的麻煩;)

+0

沙堡的行爲對我來說應該夠了。謝謝(你的)信息。 – 2009-01-07 10:07:58

12

要定位具體成員,我相信你只是匹配簽名:

/// <seealso cref="Foo(int)"/> 
static void Foo() { } 
/// <seealso cref="Foo()"/> 
/// <seealso cref="Foo(float)"/> <------ complains 
static void Foo(int a) { } 

說實話,我不知道如何生成一個「所有重載」鏈接;我會假設任何明智的發電機都會自動做到這一點。

+0

謝謝。您使用的發電機是否自動執行此操作? – 2009-01-07 09:32:50

+0

我實際上並沒有使用發生器;單獨使用xml對於我的使用來說很好(它被智能感知和反射器使用)。我通常不需要獨立的文檔。 – 2009-01-07 11:07:28

12

使用沙堡很簡單:

<seealso cref="overloads:FullyQualifiedMyMethod">MyMethod Overloads</seealso> 

FullyQualifiedMyMethod是你需要達到的過載,包括命名空間和類的完整路徑,即:System.Linq.Enumerable.Sum

然而,VB編譯器發出警告說該屬性無法解析,可以忽略。