2009-07-27 12 views

risposta

3

E 'certamente possibile farlo anche se non è così semplice come la modifica di un'impostazione. Avresti bisogno di scrivere un addin di Visual Studio per realizzare questo.

Visita http://msdn.microsoft.com/en-us/vsx/bb980955.aspx per iniziare. Come altri faranno notare. Non è per i deboli di cuore.

Ecco un link che può puntare verso quello che stai cercando: http://msdn.microsoft.com/en-us/library/bb166778.aspx

+0

buoni punti. ecco un altro buon link http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.textmanager.interop.ivshicoloritem.aspx –

+0

Ho usato per programmare oggetti COM ATL. Non sono debole di cuore. – quillbreaker

1

Non è possibile. Ciò richiederebbe il supporto del servizio linguistico e né C# né VB.Net forniscono questa funzionalità.

Impossibile è probabilmente troppo forte di una parola. È certamente possibile farlo con un componente aggiuntivo che esegue un'analisi approfondita del codice e calcola le gerarchie. Comunque è un compito non banale.

0

Certo, v'è un ampio set di strumenti per costruire estensioni VS, see Visual Studio 2008 SDK 1.1 Ma il tempo necessario per costruire una tale componente aggiuntivo verrà richiedere più tempo che passerete navigando componenti e determinare se sono usa e getta o no

0

non sono sicuro, se FxCop o StyleCop può fare questo già. Ma poi, sarà un suggerimento/avvertimento post-compilazione.

ReSharper suggerisce questo, immagino.

0

Forse sono una persona cattiva per fare questo, ma ho usato questo pezzo di codice di recente:

public static void BulkDispose(object[] objects) 
{ 
    foreach (object o in objects) 
    { 
    if (o != null) 
    { 
     if (o is IDisposable) 
     { 
     IDisposable disposable = o as IDisposable; 
     disposable.Dispose(); 
     } 
    } 
    } 
} 
+0

Non è insolito per Dispose lanciare eccezioni ("già disposte"), quindi è consigliabile che ciascuna chiamata di disposi sia racchiusa in un try/catch. –

+0

Disponi shoud * mai * lancia a causa di più chiamate. Se lo fa, il componente in questione non è conforme al contratto IDisposable. Vedere https://msdn.microsoft.com/en-us/library/system.idisposable.dispose.aspx in Note: "L'oggetto non deve generare un'eccezione se il suo metodo Dispose viene chiamato più volte." – bernhof

7

Presumo che ciò diventerà più facile/senza estensione, una volta Roslyn esce, ma questo non è al momento facile perché non è possibile accedere facilmente al codice come C# da un'estensione.

In Resharper è facile, però! Il mio esempio è stato testato in ReSharper 9.0. Purtroppo, non c'è un modo semplice per darti questo.

  • ReSharper -> Opzioni -> Codice di ispezione -> Modelli personalizzati -> Aggiungi, dialogo popsup
  • Select C# (in alto a sinistra)
  • Selezionare "Trova" (in alto a destra)
  • Aggiungere il modello di severità new $disp$($args$)
  • modello: Mostri come suggerimento
  • Descrizione: costruzione monouso
  • "Aggiungi segnaposto" di tipo: tipo, nome: disp, digitare: Sistema.IDisposable
  • "Aggiungi segnaposto" di tipo: Argomenti, nome: args

Save e avrete ora ottenere un "suggerimento" ogni volta che una nuova e getta è in costruzione.

Aggiungere il modello $disp$ $var$ = $exp$; potrebbe anche essere utile. Tutto ciò che è uguale a exp è definito come un'espressione.

enter image description here

Problemi correlati