2009-01-07 48 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编译器发出警告说该属性无法解析,可以忽略。