2008-10-02 10 views
28

Gibt es eine Möglichkeit, dass ich ändern kann, wie ein Literal eines Code-Snippets rendert, wenn es in dem Code verwendet wird, den das Snippet generiert?Formatierung Literal-Parameter eines C# -Code-Snippets

Insbesondere würde ich gerne wissen, ob ich eine wörtliche sagen genannt haben kann, $ $ Propertyname und dann das Snippet Motor bekommen zu „machen _ $ $ Propertyname, wo das erste Zeichen Klein gemacht wird.

ich kann ‚t R # leisten. Bitte helfen :)

+0

Sehen Sie meinen Vorschlag [Hinzufügen Scripting Code-Schnipsel (T4 + Roslyn)] (https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/5805587-add -scripting-to-code-snippets-t4-roslyn). Leider habe ich auf diesen Vorschlag keine Antwort erhalten. –

Antwort

20

Leider keine Möglichkeit, dort zu sein scheint. Snippets für transformation functions erstaunlich begrenzte Unterstützung bieten, wie man sehen kann.

Sie müssen mit der VS-Standardlösung halten, das ist um zwei Literale zu schreiben: eine für den Eigenschaftsnamen und die andere für den Namen der Mitgliedsvariablen

+0

Danke! Ich konnte auch nichts finden, und das Funktionsattribut scheint nicht erweiterbar zu sein (und hat nur 3 Funktionen zur Auswahl!?!) Wenn ich nur die Umbenennungsfunktion automatisch auslösen könnte, nachdem das Snippet fertig ist .. –

+0

Hallo Michael und Caerbanog, ich hatte genau die gleiche Idee :-) Hast du einen Weg bis 2008 gefunden? Vielen Dank –

+1

Scheint, dass dies immer noch für Visual Studio 2010 gilt ... – hfrmobile

4

ein „reparieren“, um einen Präfix in der Namensgebung oder die Membervariable, d.h .:

string m_$name$; 
string $name$ 
{ 
get{return m_$name$;} 
set{m_$name$=value;} 
}; 
+2

Ja, aber Sie können die Hülle von $ name $ nicht ändern, um sie zu camelCase zu machen. (Normalerweise benutzen Leute '' _property'' als Hintergrund für eine Eigenschaft mit dem Namen '' Property'', etc. Auch "m_" ist super veraltet ... da wie vb6 ... bitte benutze es nie). – BrainSlugs83

1

Sie können geben Sie einen oberen ersten Buchstaben, dann ein Eigenschaftsnamen, dann einem niedrigeren Anfangsbuchstabe zu verwenden. Versuchen Sie, diese Schnipsel:

<?xml version="1.0" encoding="utf-8"?> 
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> 
    <Header> 
    <Title>Notifiable Property</Title> 
    <Author>Nikolay Makhonin</Author> 
    <Shortcut>propn</Shortcut> 
    <Description>Property With in Built Property Changed method implementation.</Description> 
    <SnippetTypes> 
     <SnippetType>SurroundsWith</SnippetType> 
     <SnippetType>Expansion</SnippetType> 
    </SnippetTypes> 
    </Header> 
    <Snippet> 
    <Declarations> 
     <Literal> 
      <ID>Type</ID> 
      <Default>Type</Default> 
     </Literal> 
     <Literal> 
      <ID>P</ID> 
      <Default>P</Default> 
     </Literal> 
     <Literal> 
      <ID>roperty</ID> 
      <Default>ropertyName</Default> 
     </Literal> 
     <Literal> 
      <ID>p</ID> 
      <Default>p</Default> 
     </Literal> 
     <Literal> 
      <ID>Ownerclass</ID> 
      <ToolTip>The owning class of this Property.</ToolTip> 
      <Function>ClassName()</Function> 
      <Default>Ownerclass</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="CSharp"> 
     <![CDATA[#region $P$$roperty$ 

     private Field<$Type$> _$p$$roperty$; 
     public static readonly string $P$$roperty$PropertyName = GetPropertyName(() => (($Ownerclass$)null).$P$$roperty$); 
     public $Type$ $P$$roperty$ 
     { 
      get { return _$p$$roperty$; } 
      set { Set(ref _$p$$roperty$, value); } 
     } 

     #endregion 

]]> 
    </Code> 
    </Snippet> 
</CodeSnippet>