2011年2月6日日曜日

C#用のスニペット


VisualStudio用のスニペットを作ってみた。
まず下記のXMLを適当なフォルダに適当なファイル名(拡張子は.snippet)で保存する。
次にツール(T)>コードスニペットマネージャ(T)...からフォルダを指定して追加。
あとは、下記の一覧のショートカット(アンダースコア含む)をエディタ上で入力して、Tabキーを押せば補完できる。

ショートカット説明
_propプロパティ自動生成
_fieldフィールド自動生成
_classクラス自動生成


以下、フィルに保存するXML。ちょっと読めば雰囲気でカスタマイズ可能な内容。

プロパティ自動生成(_prop)


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
  3.  <CodeSnippet Format="1.0.0">  
  4.   <Header>  
  5.    <Title>prop</Title>  
  6.       <Shortcut>_prop</Shortcut>  
  7.    <Description>プロパティ用のスニペット</Description>  
  8.    <Author></Author>  
  9.    <SnippetTypes>  
  10.     <SnippetType>Expansion</SnippetType>  
  11.    </SnippetTypes>  
  12.   </Header>  
  13.   <Snippet>  
  14.    <Declarations>  
  15.     <Literal>  
  16.      <ID>viewname</ID>  
  17.      <ToolTip>日本語名</ToolTip>  
  18.      <Default>名前</Default>  
  19.     </Literal>  
  20.     <Literal>  
  21.      <ID>type</ID>  
  22.      <ToolTip></ToolTip>  
  23.      <Default>string</Default>  
  24.     </Literal>  
  25.     <Literal>  
  26.      <ID>property</ID>  
  27.      <ToolTip>プロパティ名</ToolTip>  
  28.      <Default>MyProperty</Default>  
  29.     </Literal>  
  30.     <Literal>  
  31.      <ID>field</ID>  
  32.      <ToolTip>フィールド名</ToolTip>  
  33.      <Default>_field</Default>  
  34.     </Literal>  
  35.    </Declarations>  
  36.    <Code Language="csharp">  
  37.       <![CDATA[ 
  38.         /// <summery>$viewname$を設定/取得します。</summery> 
  39.         public $type$ $property$  
  40.         {  
  41.           get{ return this.$field$; } 
  42.           set{ this.$field$ = value; } 
  43.         } 
  44.    $end$]]>  
  45.    </Code>  
  46.   </Snippet>  
  47.  </CodeSnippet>  
  48. </CodeSnippets>  


フィールド自動生成(_field)


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
  3.  <CodeSnippet Format="1.0.0">  
  4.   <Header>  
  5.    <Title>field</Title>  
  6.       <Shortcut>_field</Shortcut>  
  7.    <Description>フィールド用のスニペット</Description>  
  8.    <Author></Author>  
  9.    <SnippetTypes>  
  10.     <SnippetType>Expansion</SnippetType>  
  11.    </SnippetTypes>  
  12.   </Header>  
  13.   <Snippet>  
  14.    <Declarations>  
  15.     <Literal>  
  16.      <ID>viewname</ID>  
  17.      <ToolTip>日本語名</ToolTip>  
  18.      <Default>名前</Default>  
  19.     </Literal>  
  20.     <Literal>  
  21.      <ID>type</ID>  
  22.      <ToolTip></ToolTip>  
  23.      <Default>string</Default>  
  24.     </Literal>  
  25.     <Literal>  
  26.      <ID>field</ID>  
  27.      <ToolTip>フィールド名</ToolTip>  
  28.      <Default>_field</Default>  
  29.     </Literal>  
  30.    </Declarations>  
  31.    <Code Language="csharp">  
  32.       <![CDATA[ 
  33.         /// <summery>$viewname$</summery> 
  34.         private $type$ $field$; 
  35.    $end$]]>  
  36.    </Code>  
  37.   </Snippet>  
  38.  </CodeSnippet>  
  39. </CodeSnippets>  


クラス自動生成(_class)


  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
  3.  <CodeSnippet Format="1.0.0">  
  4.   <Header>  
  5.    <Title>class</Title>  
  6.    <Shortcut>_class</Shortcut>  
  7.    <Description>クラス用のスニペット</Description>  
  8.    <Author></Author>  
  9.    <SnippetTypes>  
  10.     <SnippetType>Expansion</SnippetType>  
  11.    </SnippetTypes>  
  12.   </Header>  
  13.   <Snippet>  
  14.    <Declarations>  
  15.     <Literal>  
  16.      <ID>description</ID>  
  17.      <ToolTip>クラスの説明</ToolTip>  
  18.      <Default></Default>  
  19.     </Literal>  
  20.     <Literal>  
  21.      <ID>name</ID>  
  22.      <ToolTip>クラス名</ToolTip>  
  23.      <Default>MyClass</Default>  
  24.     </Literal>  
  25.    </Declarations>  
  26.    <Code Language="csharp">  
  27.   <![CDATA[ 
  28.  
  29.  /// <summery> 
  30.  /// $description$ 
  31.  /// </summery> 
  32.  class $name$ 
  33.  { 
  34.     #region フィールド 
  35.      
  36.     #endregion 
  37.      
  38.     #region 初期化 
  39.   /// <summery> 
  40.   /// コンストラクタです。 
  41.   /// </summery> 
  42.   public $name$() 
  43.   {} 
  44.     #endregion 
  45.  
  46.     #region プロパティ 
  47.      
  48.     #endregion 
  49.  
  50.     #region メソッド 
  51.      
  52.     #endregion 
  53.  
  54.   } 
  55.  ]]>  
  56.    </Code>  
  57.   </Snippet>  
  58.  </CodeSnippet>  
  59. </CodeSnippets>  


もちろん標準のスニペットもあるが、細かいところが合わなかったりするので、結局は自分で作ったほうがしっくりくる。

0 件のコメント:

コメントを投稿