2012-02-23 10 views
5

Sto cercando di includere uno snippet di codice nella documentazione XML della mia classe, ma il compilatore si lamenta che un elemento xml non è chiuso! Ecco quello che sto cercando di realizzareGenerics in XML documentation issue

/// <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>{ 
.... 
} 

Ho provato a sostituire il frammento di codice da /// <c> MyClass class = new MyClass{String}(); </c>

Uno ha sperimentato questo prima?

Grazie per il vostro aiuto

+0

Questo è stato chiesto e ha risposto a http://stackoverflow.com/questions/532166/c-how-to-reference-generic- classes-and-methods-in-xml-documentation – kaj

+0

@KAJ poiché OP ha aggiornato e corretto un errore di copia/incolla. Sono d'accordo e ho votato di chiudere come duplicato. – Filburt

risposta

7

Nella documentazione XML, è necessario sostituire le parentesi triangolari con le parentesi graffe:

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

} 

public void DoSomething<T>() 
{ 

} 

Il motivo si finisce costretti a fare questo, perché isn realmente' t xml ben formato se si consentono le parentesi triangolari al di fuori del markup dell'elemento.

La sostituzione che hai provato è corretta.

+3

o <e> – demoncodemonkey

+1

sì, è possibile farlo anche se rende la documentazione del codice di per sé meno leggibile IMHO. –

2

I tuoi <remarks> non vengono mai chiusi.

Sostituire le parentesi angolari come già provato è necessario.

+0

Mi spiace, quello era un problema di copia/incolla. Ho appena aggiunto il tag di chiusura per i commenti. – GETah

+0

In tal caso, KAJ ha ragione e l'uso di parentesi graffe risolverà il problema. – Filburt

5

Non hai chiuso l'elemento Remarks nella quarta linea, potrebbe lamentarsi, solo al numero di riga errato.

Inoltre, con esempi contenenti generici, preleva List<string> come il testo letterale List seguito da un elemento XML non chiuso string. Il modo più semplice per farlo è fare List &amp;lt;string&amp;gr; che, se analizzato, produce List<string> senza essere un elemento XML.

Il team # compilatore C aggiunto { e } come sostituti per questo, quindi si può solo fare List{string} e saranno trattati in <> s '.

+0

Mi spiace, quello era un problema di copia/incolla. Ho appena aggiunto il tag di chiusura per i commenti. – GETah

3

Un paio di cose:

  1. Fuga tuo < e > caratteri sostituendoli con &lt; e &gt;.
  2. Chiudere il XML <remarks> sezione con un </remarks>
  3. Quando non ha deciso di fare riferimento a una generica in un tag (cioè <see ... />, <seealso ... />, ecc), allora si farebbe in modo simile al seguente: <see cref="SomeMethod{T}(T value)" />. Non specificare mai un tipo concreto nel riferimento (ovvero, non fare <see cref="SomeMethod{String}(String value)" />).

Ecco una versione fissa del vostro XML Commenti:

/// <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

Grazie per la rapida risposta. Userò {} invece di < e < – GETah