2012-02-23 17 views
5

Estoy tratando de incluir un fragmento de código en la documentación XML de mi clase, pero el compilador se queja de que un elemento xml no está cerrado. Aquí es lo que estoy tratando de lograrGenéricos en la documentación XML problema

/// <summary> 
/// Method documentation here... 
/// </summary> 
/// <remarks> 
/// <para> 
/// This class should be used as follow: 
/// <br/> 
/// ************** PROBLEM IN NEXT LINE ******************** 
/// <c> MyClass class = new MyClass<String>(); </c> 
/// </para> 
/// </remarks> 
public class MyClass<T>{ 
.... 
} 

Traté de sustituir el fragmento de código /// <c> MyClass class = new MyClass{String}(); </c>

Cualquiera ha experimentado esto antes?

Gracias por su ayuda

+0

Esto se preguntó y respondió a http://stackoverflow.com/questions/532166/c-how-to-reference-generic- classes-and-methods-in-xml-documentation – kaj

+0

@KAJ desde que OP actualizó y corrigió un error de copiar/pegar Estoy de acuerdo y he votado para cerrar como duplicado. – Filburt

Respuesta

7

En la documentación XML, se tienen que reemplazar las llaves triangulares con llaves:

/// <summary> 
/// Calls <see cref="DoSomething{T}"/>. 
/// </summary> 
public void CallsDoSomething() 
{ 

} 

public void DoSomething<T>() 
{ 

} 

La razón terminas forzado a hacer esto, porque ISN genuinamente' t bien formado xml si permite llaves triangulares fuera del marcado del elemento.

El reemplazo que ha intentado es el correcto.

+3

o <y> – demoncodemonkey

+1

sí, puede hacerlo también, aunque hace que la documentación del código en sí sea menos legible en mi humilde opinión. –

2

Sus <remarks> nunca se cierran.

También es necesario reemplazar las llaves angulares como ya lo ha intentado.

+0

Disculpa, fue un problema de copiar/pegar. Acabo de agregar la etiqueta de cierre para comentarios. – GETah

+0

En ese caso, KAJ tiene razón y el uso de llaves te solucionará el problema. – Filburt

5

No cerró el elemento Remarks en la 4ª línea, podría estarse quejando de eso, solo en el número de línea incorrecto.

Además, con ejemplos que contienen genéricos, toma List<string> como el literal de texto List seguido de un elemento XML string no cerrado. La manera más fácil de solucionar esto es haciendo List &amp;lt;string&amp;gr; que cuando se analiza produce List<string> sin ser un elemento XML.

El equipo compilador de C# añadieron { y } como sustitutos de los que, por lo que sólo puede hacer List{string} y que serán procesados ​​en <> 's.

+0

Disculpa, fue un problema de copiar/pegar. Acabo de agregar la etiqueta de cierre para comentarios. – GETah

3

Un par de cosas:

  1. de escape de su < y > caracteres reemplazándolos con &lt; y &gt;.
  2. cerrar Su XML <remarks> sección con un </remarks>
  3. Cuando lo hace decidido hacer referencia a una genérica en una etiqueta (es decir <see ... />, <seealso ... />, etc.), entonces sería hacerlo como lo siguiente: <see cref="SomeMethod{T}(T value)" />. Nunca especifique un tipo concreto en la referencia (es decir, no haga <see cref="SomeMethod{String}(String value)" />).

Aquí es una versión fija de sus XML Comentarios:

/// <summary> 
/// Method documentation here... 
/// </summary> 
/// <remarks> 
/// <note type="implementsinfo"> 
///  <para>This class should be used as follow:</para> 
///  <para><c>MyClass class = new MyClass&lt;string&lt;();</c></para> 
/// </note> 
/// </remarks> 
public class MyClass<T> 
{ 
    .... 
} 
+0

Gracias por la respuesta rápida. Iré por usar {} en lugar de < y < – GETah

Cuestiones relacionadas