Visualizzare commenti descrittivi metodi

martedì 07 gennaio 2014 - 09.11
Tag Elenco Tags  C#  |  .NET 3.5  |  .NET 4.0  |  Visual Studio 2010

andrestu Profilo | Expert

Salve a tutti,
avendo un contesto come tanti dove dichiaro un interfaccia e poi la implemento da una o più classi, e inserendo i commenti ( /// ...descrizione... /// ) nei membri dell'interfaccia, mi chiedevo se cè il modo di fare visualizzare i commenti anche chiamando i membri dalla classe che implementa l'interfaccia.
Allego un esempio scemo per farvi capire casa intendo.



Andrea Restucci - Web Developer

0v3rCl0ck Profilo | Guru

Da quel che so, l'intellisense non "eredita" i commenti. Potresti però mettere i commenti sia su interfaccia che implementazione seguendo però una linea guida di non riscrivere quello già scritto, quindi sull'interfaccia descrivi il contratto, e quindi sarai generico, nell'implementazione non ripeti quello scritto nell'interfaccia ma gli fai un riferimento e aggiungi le nozioni specifiche dell'implementazione:

public interface IPerson { /// <summary> /// descrizione da visualizzare /// </summary> string Nome { get; set; } } public class Impiegato : IPerson { /// <summary> /// Implementa <see cref="IPerson.Nome"/>. /// Qualche nozione in specifico dell'implementazione. /// </summary> public string Nome { get; set; } }

altrimenti per librerie da distribuire ci sono vari modi di riutilizzare i commenti o tenerli diciamo sincronizzati, quali: ghostdoc, Microsoft Sandcastle o NDoc (vedi tag inheritdoc, inherited), oppure puoi sfruttare il tag <include> che ti permette di includere commenti da file esterni (vedi msdn: http://msdn.microsoft.com/en-us/library/9h8dy30z%28v=VS.100%29.aspx) ma questo accresce la complessità per la stesura dei commenti e non è molto utile nel codice stesso perchè non vedresti direttamente i commenti, ma se la tua è una libreria, la distrubuisci con l'xml dei commenti, e importando la libreria i commenti nell'intellisense saranno visualizzati come configurati, quindi potendo avere interfacce e implementazioni con gli stessi commenti.


Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic

andrestu Profilo | Expert

grazie per la risposta,
diciamo che volevo appunto evitare la replica dei commenti o la stesura in più parti come da tuo suggerimento (interfaccia e implementazione) senza però complicarmi troppo la vita, pensavo che ci fosse qualche opzione in Visual Studio, un flag che magari potesse far visualizzare le descrizioni anche nei metodi o proprietà che implementano l'interfaccia.
Le descrizioni sono comunque solo a scopo ad uso interno e non devo distribuire dll o progetti, era per evitare durante lo sviluppo di andare a vedere ogni volta le descrizioni...

Andrea Restucci - Web Developer

0v3rCl0ck Profilo | Guru

>grazie per la risposta,
>diciamo che volevo appunto evitare la replica dei commenti o
>la stesura in più parti come da tuo suggerimento (interfaccia
>e implementazione) senza però complicarmi troppo la vita, pensavo
>che ci fosse qualche opzione in Visual Studio, un flag che magari
>potesse far visualizzare le descrizioni anche nei metodi o proprietà
>che implementano l'interfaccia.

purtroppo non so se esiste un flag del genere, ma penso di no, ci sono plugin che possono aiutarti a tenere sincronizzati i commenti con poco sforzo come ghostdoc, che se non sbaglio ha una funzionalità per aggiornare i commenti delle implementazioni prendendo dalle interfacce, nelle Features (http://submain.com/products/ghostdoc.aspx) trovi "For a derived class uses the base class documentation." e nella licenza free è incluso.


Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5