2010-02-15 5 views
9

Voglio scrivere uno Studio frammento visivo che mi permette di creare rapidamente una classe di forma:Visual Studio: è possibile definire funzioni personalizzate da utilizzare nei propri frammenti di codice?

public SomeClass 
{ 
    public SomeType SomeProperty { get; private set; } 
    public SomeClass(SomeType someProperty) { SomeProperty = someProperty; } 
} 

voglio il parametro sul costruttore ad avere lo stesso nome della proprietà, ma in minuscolo . Non voglio dover digitare il nome due volte. Come posso fare questo?

Ho già esaminato l'XML per i frammenti e ho scoperto che ci sono alcune funzioni che possono essere utilizzate. Ad esempio, il codice "switch" frammento di built-in contiene le seguenti istruzioni:

<Function>GenerateSwitchCases($expression$)</Function> 

Secondo this MSDN documentation page, ci sono tre funzioni built-in che è possibile utilizzare in questo <Function> tag. Sfortunatamente, nessuno di loro fa quello che voglio (minuscolo la prima lettera). È possibile definire una funzione che posso quindi utilizzare nel mio snippet?

+0

uomo, stavo solo cercando di fare quasi la stessa cosa ! Argh! –

+0

vedi questa risposta: http://stackoverflow.com/questions/5663569/c-custom-code-snippet-functions – ballombert

risposta

5

No questo non è possibile in Visual Studio oggi. La definizione e l'esecuzione delle funzioni dei frammenti è controllata direttamente dal servizio di linguaggio C#. Al momento non è un punto di estensibilità. Tuttavia, viene considerato per una versione futura del prodotto.

+0

E '? Sei sicuro? C'è un commento su un post di Microsoft Connect che dice che è considerato "per la prossima versione", ma quel commento è del 2005 e ci sono state due versioni successive dal ... – Timwi

+0

@Timwi, sicuro al 100%. – JaredPar

+0

Per chiarezza, il mio commento si riferiva alla tua ultima frase in cui affermavi che "È stato considerato per una versione futura". Non sono convinto che sia così. – Timwi

-3

leggi questo articolo sulla creazione di un frammento di codice che definisce le variabili che possono essere utilizzate più volte e devono essere digitati solo una volta: http://www.switchonthecode.com/tutorials/csharp-tutorial-visual-studio-code-snippets

<Snippet> 
    <Declarations> 
    <Literal> 
     <ID>startTime</ID> 
     <ToolTip>Beginning Time Variable</ToolTip> 
     <Default>startTime</Default> 
    </Literal> 
    <Literal> 
     <ID>message</ID> 
     <ToolTip>Replace This With Your Description</ToolTip> 
     <Default>My function</Default> 
    </Literal> 
    <Literal Editable="false"> 
     <ID>DiagnosticsDebug</ID> 
     <Function> 
     SimpleTypeName(global::System.Diagnostics.Debug) 
     </Function> 
    </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
    <![CDATA[ 
    long $startTime$ = Environment.TickCount; 
    $selected$ $end$ 
    $DiagnosticsDebug$.WriteLine(String.Format(
     "$message$ took {0} ticks.", Environment.TickCount - $startTime$)); 
    ]]> 
    </Code> 
</Snippet>