| |
\ /
Ich möchte Euch am Beispiel eines Snippets für ein ViewModelProperty kurz zeigen, wie es funktioniert. Zu erst benötigen wir das Code Snippet als C# Code:
private string _testField; /// <summary> /// gets / sets TestProperty /// </summary> public string TestProperty { get { return _testField; } set { if (value != _testField) { _testField = value; OnPropertyChanged(() => TestProperty); } } }
So weit, so gut. Nachdem wir festgelegt haben, dass die Bezeichnung für das snippet propvm sein soll, müssen wir jetzt definieren, welche Teile des Codes vom Benutzer eingegeben werden, diese müssen wir dann durch ein Literal mit der Syntax $ID$ ersetzen. In unserem Fall sind das die Teile "string", "_testField" und "TestProperty":
private $type$ $field$; /// <summary> /// gets / sets $property$ /// </summary> public $type$ $property$ { get { return $field$; } set { if (value != $field$) { $field$= value; OnPropertyChanged(() => $property$); } } }Das war schon fast alles, jetzt müssen wir das ganze nur noch in das snippet-Xml-Format einfügen, ein paar Metadaten dazu und fertig sind wir. Wichtig dabei ist, dass wir jedes Literal, das wir verwenden im Xml auch deklarieren und mit einem netten Tooltip für den Anwender versehen. Das fertige Snippet sieht dann also so aus:
<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>propvm</Title> <Shortcut>propvm</Shortcut> <Description>Codeausschnitt für eine ViewModel-Eigenschaft inkl. dem dahinter liegenden Feld</Description> <Author>Thomas Kison</Author> <SnippetTypes> <SnippetType>Expansion</SnippetType> </SnippetTypes> </Header> <Snippet> <Declarations> <Literal> <ID>type</ID> <ToolTip>Eigenschaftentyp</ToolTip> <Default>string</Default> </Literal> <Literal> <ID>property</ID> <ToolTip>Eigenschaftenname</ToolTip> <Default>MyProperty</Default> </Literal> <Literal> <ID>field</ID> <ToolTip>Die Variable hinter dieser Eigenschaft</ToolTip> <Default>_myVar</Default> </Literal> </Declarations> <Code Language="csharp"> <![CDATA[private $type$ $field$; /// <summary> /// gets / sets $property$ /// </summary> public $type$ $property$ { get { return $field$; } set { if (value != $field$) { $field$= value; OnPropertyChanged(() => $property$); } } } $end$]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>Jetzt müssen wir Visual Studio nur noch mitteilen, dass es dieses Script gibt. Das geht recht einfach, wir legen es in unser "Snippet-Verzeichnis" von Visual Studio. Den genauen Pfad finden wir unter Extras > Codeausschnitt-Manager unter dem Ordner My Code Snippets
Viel Spaß mit Euren eigenen Visual Studio Snippets!