2014-02-25 5 views
13

Ich habe einige Schnipsel erstellt, um Felder für eine Einstellungsklasse zu generieren. Ich verwende jetzt 2 Variablen - $setting$ und $Setting$ -, um Namen für die Eigenschaft und das Hintergrundfeld zu generieren. Ich mag es, eine einzelne Variable zu verwenden, da der einzige Unterschied darin besteht, dass das Hintergrundfeld immer eine Version mit niedrigerem Gehäuse ist.Wie wird eine Visual Studio Code Snippet-Variable kleingeschrieben?

Aktuelle Code:

string $setting$; 

/// <summary> 
/// Gets the $bigComment$. 
/// </summary> 
/// <value>The $smallComment$.</value> 
public string $Setting$ 
{ 
    get 
    { 
     if (String.IsNullOrEmpty($setting$)) 
     { 
      $setting$ = CFW.Common.Configuration.GetAppSetting("$Setting$", $defaultValue$); 
     } 

     return $setting$; 
    } 
} 

Ist das möglich?

Antwort

4

Es ist nicht möglich Literale in einem Code-Schnipsel zu ändern. Es gibt einige Funktionen zur Verfügung:

GenerateSwitchCases - Generiert eine switch-Anweisung und eine Reihe von Fallzahlen für die Mitglieder der Aufzählung durch den EnumerationLiteral Parameter angegeben. Der EnumerationLiteral-Parameter muss entweder ein Verweis auf ein Enumerationsliteral oder ein Enumerationstyp sein.

Klassenname - Gibt den Namen der Klasse zurück, die das eingefügte Snippet enthält.

SimpleTypeName - Reduziert den Parameter TypeName auf die einfachste Form in dem Kontext, in dem das Snippet aufgerufen wurde.

Sie können Literale jedoch nicht ändern.

Quelle: http://msdn.microsoft.com/en-us/library/ms242312(v=vs.110).aspx

-2

Gemäß the official MSDN docs sollten Standardwerte für Snippet-Variablen im XML-Code des Snippets definiert werden, ohne die Variablennamen zu verwenden.

So würden Sie so etwas wie dieses:

<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/CodeSnippet"> 
    <CodeSnippet> 
     <Header> 
      <!-- Add header information here --> 
     </Header> 
     <Snippet> 
      <!-- Add additional Snippet information here --> 
      <Declarations> 
       <Literal> 
        <ID>SettingsField</ID> 
        <ToolTip>The settings field.</ToolTip> 
        <Default>settings</Default> 
       </Literal> 
       <Object> 
        <ID>SettingsProperty</ID> 
        <ToolTip>The settings property.</ToolTip> 
        <Default>Settings</Default> 
       </Object> 
      </Declarations> 
      <Code Language="CSharp"> 
       <![CDATA[ 
        Snippet code with $SettingsField$ and $SettingsProperty$ 
       ]]> 
      </Code> 
     </Snippet> 
    </CodeSnippet> 
</CodeSnippets> 
+4

Ja, ich weiß. Die Sache ist, ich möchte ein einzelnes Literal sowohl für $ SettingsField $ als auch für $ SettingsProperty $ verwenden - weil nur das Gehäuse des ersten Buchstabens anders ist. –

+0

Wenn Sie möchten, dass Visual Studio automatisch eine Variable zur CamelCase-Version der anderen macht, ist das leider nicht möglich. Ansonsten ... wie würde der generierte Code aussehen? Verschiedene Mitglieder können nicht denselben Namen haben. –

+3

@SolalPirelli Es gibt viele Beispiele, wo Sie sowohl eine Camelcase-Version als auch Kleinbuchstaben wünschen. – BenRacicot

Verwandte Themen