Custom Controls con supporto per l'Intellisense

2 pagine in totale: <<Indietro 1 [2]

Suggerimenti nell'autocompletion

VS ha un ricco sistema di autocompletion. Oltre al classico popup con proprietà, metodi, ecc., è stato aggiunto anche un sistema di suggerimenti per il membro selezionato nel popup, sia questo proprietà, metodo o evento. In caso di proprietà, a lato appare un altro popup con la spiegazione della stessa, mentre in caso di metodo, una descrizione del metodo con la possibilità di scegliere l'eventuale overload e la spiegazione di tutti i parametri da passare, infine in caso di evento una descrizione associata.

La prima feature (popup con membri pubblici) viene ottenuta tramite reflection ; VS ispeziona l'assembly contenente la classe che stiamo utilizzando e popola il popup. La seconda (popup con suggerimenti) viene ottenuta tramite l'interpretazione di un file XML opportunamente formattato. Questo deve essere presente nella stessa directory dell'assembly e avere il suo stesso nome con estensione .xml (ad esempio il file di descrizione dell'assembly System.dll si chiama System.xml). Fortunatamente la creazione di questo file non è un fardello sulle nostre spalle, come nel caso del file per l'autocompletion HTML, ma è un compito che il compilatore C# svolge per noi, interpretando i commenti inseriti in testa alle classi e a tutti i membri contenuti in esse. E' stato specificato il compilatore C# perché questa feature non è presente in quello VB. Di default, questa funzione non è abilitata, quindi, bisogna intervenire sulle proprietà del progetto ed inserire il nome del file da creare.

Immagine

E' infatti possibile inserire i commenti seguendo una sintassi che sfrutta la potenza del codice markup, attraverso una sintassi XML contenuta nei commenti.

VS.NET, per arricchire l'autocompletion, utilizza solo alcuni dei tag messi a disposizione. Ce ne sono altri che permettono di specificare molte altre informazioni, dato che il file XML non ha solo lo scopo di fornire i suggerimenti per VS.NET, ma anche quella di fornire l'input per la creazione di file di help. Ci sono alcuni tool, free e non, che partendo da questo file creano file di help identici a MSDN, come nDoc .

Vediamo come scrivere i commenti nel nostro codice.

/// include file='file.xml' path='xml[@param="value"]/*' />
/// <param name="Param1">Primo parametro</param>
/// <returns>Valore di ritorno</returns>
/// <summary>Descrizione di un membro e/o di una classe</summary>

Come detto, VS non utilizza tutti i tag di commento ai fini del suggerimento, per cui per i nostri scopi sono importanti:

  • <include> : permette di importare il contenuto di un file XML di commenti all'interno del file. La potenza di questo tag sta nel permettere di importare determinate informazioni, estratte dal file, tramite la sintassi XPath evitando così di dover duplicare i commenti;
  • <param> : descrive un parametro;
  • <returns> : descrizione del parametro di output di un metodo, utilizzato solo da metodi che tornano un valore;
  • <summary> . il tag più importante, permette di inserire il commento principale per ogni membro della classe e per la classe stessa.

I tag rimanenti che VS non usa, ma che sono importanti ai fini della creazione dei file di help, sono molti di più.

/// <para>Here's how you could make a second paragraph in a description. <see cref="System.Console.WriteLine"/> for information about output statements.</para>
/// <seealso cref="MyClass.Main"/>
/// <remarks>
/// You may have some additional information about this class.
/// </remarks>
/// <value>Name accesses the value of the name data member</value>
/// <see cref="NullableInt16"/>
/// <exception cref="System.OverflowException">
/// </example>
/// <code>
///  class MyClass
///  {
///    public static int Main()
///    {
///      return GetZero();
///    }
///  }
/// </code>
/// </example>
/// <remarks>MyMethod is a method in the MyClass class.
/// The <paramref name="Int1"/> parameter takes a number.
/// </remarks>
  • <code> : contrassegna un gruppo di righe come codice. In MSDN tutti gli esempi vengono scritti all'interno di questo tag. Normalmente questo viene inserito all'interno di un tag <example>.
  • <example> : assegna un titolo al codice che viene inserito nel tag innestato <code>:
  • <exception> : permette di specificare i tipi di eccezioni che il metodo può generare. Applicabile solo ad un metodo;
  • <para> : crea un nuovo paragrafo all'interno dei tag <summary> , <remarks> e <returns> ;
  • <permission>: permette di specificare la classe usata per le policy di accesso al membro o alla classe;
  • <remarks> : permette di inserire informazioni aggiuntive oltre a quelle specificate nel tag summary, generando una sezione a parte nei file di help.
  • <see> : tramite l'attributo cref, specifica un tipo a cui si vuole fare riferimento, nell'help viene visualizzato come link alla pagina di descrizione del membro;
  • <seealso> : identico al tag <see> con la differenza di essere visualizzato nella sezione "Vedere anche" dell'help;
  • <value> : permette di descrivere una proprietà.

Conclusioni

Alla fine di questa serie, abbiamo visto il completo ciclo di vita delle feature di Design-Time. Infatti, abbiamo un designer per VS, editor di proprietà e di controllo, per semplificare al massimo il compito dello sviluppatore in maniera visuale, e un sistema di autocompletion in HTML e di suggerimenti nel code-behind. Nessuna di queste feature è indispensabile per il deployment e l'utilizzo di un controllo, ma la differenza tra un controllo professionale e uno non professionale sta anche nella semplicità di configurazione che i primi sono in grado di offrire.

Approfondimenti

2 pagine in totale: <<Indietro 1 [2]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC