2009-01-07 15 views
22

Veo en enlaces de MSDN como "CompareOrdinal Overloads". ¿Cómo puedo escribir un enlace así en C#?¿Cómo hacer una cref para sobrecargar el método en una etiqueta <seealso> en C#?

me trataron:

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

Pero el compilador me da una advertencia acerca de ser una referencia ambigua para el método que tiene otras sobrecargas.

(principiante pregunta: ¿Es realmente necesario escribir esta etiqueta para enlazar a las sobrecargas, o es generado automáticamente por procesadores de documentación?)

Respuesta

4

La documentación de Xml no tiene un medio para hacer referencia a todas las sobrecargas de un método.

El generador de documentación más popular para proyectos C# es Sandcastle. Automáticamente creará un enlace a una página de lista de sobrecargas si es necesario. Por lo tanto, en una página de la lista de miembros, el nombre de un método sobrecargado aparecerá solo una vez, al hacer clic en él se le guiará a la página de sobrecargas de ese método y de ahí a una sobrecarga específica.

La colocación de un enlace a la página de lista de sobrecargas en la documentación Xml requerirá un conocimiento profundo de la herramienta externa que se está utilizando y probablemente no sea una buena idea.

Si realmente debe tener esto, entonces tal vez una forma es utilizar un ancla con una identificación específicamente formada. La mayoría de los generadores de documentos proporcionan algunos medios arcanos de archivos generados antes o después del procesamiento y deben darle la oportunidad de elegir estos anclajes y proporcionarles un href apropiado.

OTH, puede ser más problemas de lo que vale;)

+0

El comportamiento de Sandcastle debería ser suficiente para mí. Gracias por la info. –

12

Para hacer referencia a miembros específicos, creo que sólo coincide con la firma :

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

Para ser sincero, no estoy seguro de cómo generar un enlace de "todas las sobrecargas"; Supongo que cualquier generador sensato hizo esto automáticamente.

+0

Gracias. ¿El generador que usas hace esto automáticamente? –

+0

Realmente no uso un generador; el xml solo está bien para mi uso (es utilizado tanto por intellisense como por reflector). Normalmente no necesito documentación independiente. –

12

Usando castillo de arena es simple:

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

FullyQualifiedMyMethod es la ruta completa que necesita para llegar a la sobrecarga, incluyendo espacios de nombres y clases, es decir: System.Linq.Enumerable.Sum

Sin embargo, el compilador de VB emite una advertencia que indica que el atributo no se puede resolver, lo cual se puede ignorar.

+3

La prueba con SHFB 2014.5.31.0 indica que el prefijo debe ser 'o:', no 'sobrecargas:'. – tm1

+0

Y el compilador de C# (probado para lang versión 5.0) no emite una advertencia cuando se usa 'o:', así que tal vez ese sea el camino a seguir. – binki

+1

Intenté con un see (en lugar de seealso) y no tuve suerte en absoluto. sobrecargas: emite una advertencia del compilador Y SHFB 14.5.31 lo ignora. También intenté o: y M: y el compilador está bien, pero SHFB los ignora a ambos. –

Cuestiones relacionadas