2012-02-23 17 views
5

Próbuję dołączyć fragment kodu do mojej dokumentacji XML klasy, ale kompilator narzeka, że ​​element xml nie jest zamknięty! Oto co próbuję osiągnąćGenerics w dokumentacji XML wydanie

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

Próbowałem zastąpić fragment kodu przez /// <c> MyClass class = new MyClass{String}(); </c>

któregokolwiek doświadczył tego wcześniej?

Dzięki za pomoc

+0

ten został poproszony i odpowiedział na http://stackoverflow.com/questions/532166/c-how-to-reference-generic- classes-and-methods-in-xml-documentation – kaj

+0

@KAJ ponieważ OP zaktualizował i poprawił błąd kopiowania/wklejania Zgadzam się i głosowałem, aby zamknąć jako duplikat. – Filburt

Odpowiedz

7

w dokumentacji xml, trzeba wymienić trójkątne szelki z klamrami:

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

} 

public void DoSomething<T>() 
{ 

} 

Powodem skończyć się zmuszony to zrobić, ponieważ autentycznie ISN” t dobrze utworzony xml, jeśli zezwalasz na trójkątne nawiasy poza znacznikami elementu.

Wymieniana próba jest prawidłowa.

+3

lub <i> – demoncodemonkey

+1

tak - możesz to również zrobić - chociaż czyni to samą dokumentację kodu mniej czytelną IMHO. –

2

Twoje <remarks> nigdy nie są zamknięte.

Konieczne jest również zastąpienie nawiasu klamrowego, który już próbowałeś.

+0

Przepraszamy, to był problem z kopiowaniem/wklejaniem. Właśnie dodałem tag zamykający do uwag. – GETah

+0

W takim przypadku KAJ ma rację, a użycie nawiasów klamrowych rozwiąże problem. – Filburt

5

Nie zamknąłeś elementu Remarks w czwartej linii, może to narzekać, właśnie na niewłaściwym numerze linii.

Ponadto, w przypadku przykładów zawierających generyczne, odbiera List<string> jako literał tekstowy List, po którym następuje niepodzielny element XML string. Najłatwiejszym sposobem obejścia tego problemu jest zrobienie List &amp;lt;string&amp;gr;, które podczas przetwarzania generuje List<string> bez bycia elementem XML.

Zespół kompilator C# dodaje { i } jako zamienniki, że tak można po prostu zrobić List{string} i zostanie on przetworzony do <> 's.

+0

Niestety, był to problem dotyczący kopiowania/wklejania. Właśnie dodałem tag zamykający do uwag. – GETah

3

Kilka rzeczy:

  1. Ucieczka swoje < i > znaków zastępując je &lt; i &gt;.
  2. zamknąć XML <remarks> sekcję z </remarks>
  3. Jeśli nie zdecydował się odwołać generycznym w znaczniku (tj <see ... />, <seealso ... />, itd.) Wtedy można zrobić tak jak poniżej: <see cref="SomeMethod{T}(T value)" />. Nigdy nie podawaj konkretnego typu w odnośniku (to jest, nie rób <see cref="SomeMethod{String}(String value)" />).

Oto ustalona wersja swoimi XML Komentarze:

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

Dzięki za szybką odpowiedź. Pójdę za pomocą {} zamiast < i < – GETah