2009-04-17 6 views
14

In C#, sto tentando di utilizzare < vedere cref = "blah"/> per fare riferimento a una firma del metodo che contiene la parola chiave params. So che questo converte l'elenco dei parametri in un array, ma non riesco nemmeno a capire come fare riferimento a un array in un attributo CREF. Non trovo nulla nelle mie ricerche e nessuno che conosca ha alcuna idea, neanche. Il compilatore sta soffocando sulle parentesi quadre. Ho provato tutti i tipi di combinazioni diverse, usando le parentesi graffe, usando la classe Array, ma non funziona nulla. Qualcuno lo sa?Utilizzando l'attributo CREF del commento xml di C# con sintassi params

risposta

12

L'ECMA 334 PDF standard, allegato E contiene una panoramica decente di commenti di documentazione XML. È possibile scaricare lo standard a:

http://www.ecma-international.org/publications/standards/Ecma-334.htm

In particolare, ti consigliamo sezione E.3.1, a partire da pagina 496.

Contenuti simili è anche a MSDN (anche se MSDN sembra avere terribili la navigazione su questo argomento, il che rende difficile trovare le altre sezioni):

http://msdn.microsoft.com/en-us/library/aa664787(VS.71).aspx

L'equivalente a E.3.1:

http://msdn.microsoft.com/en-us/library/aa664807(VS.71).aspx

È inoltre possibile trovare la documentazione del Mono utili:

http://www.go-mono.com/docs/[email protected]%3amdoc(5)

specfically, la sezione "CREF FORMAT" copre le convenzioni stringa ID.

+3

+1 Per la ricerca e la sfilza di riferimenti, ma io continuo a pensare questa risposta potrebbe beneficiare di un esempio di montare il Requisiti dell'OP. – Basic

+0

Questa risposta sarà abbastanza inutile quando i collegamenti smetteranno di funzionare. – James

4

Basta lasciare la parola chiave param e mettere nel tipo come questo:

/// <summary> 
    /// <see cref="Method(string[])"/> 
    /// </summary> 
    public static void Main() 
    { 
     Method("String1", "String2"); 
    } 

    public static void Method(params string[] values) 
    { 
     foreach (string value in values) 
     { 
      Console.WriteLine(value); 
     } 
    } 
34

Secondo l'articolo B.3.1 ID string format, fare riferimento a un array è fatto con [parentesi quadre] (con gli specificatori lowerbound:size facoltativi) ma se si desidera fare riferimento a un array di un certo tipo (o anche a un array di oggetti), è possibile 't basta scrivere

<see cref="Object[]"/>

invece è necessario specificare che stai facendo un riferimento di tipo con il prefisso T:, come

<see cref="T:Object[]"/>

Questo non sembra da applicare quando fa riferimento a un sovraccarico di specifica di un metodo, ad esempio

<seealso cref="String.Join(String, String[])"/>

+0

Sembra il prefisso "M:" ('') è fondamentale. Soprattutto per i metodi sovraccaricati. Grazie per un bel suggerimento. – ony