Visual Studio .NETスニペットとは何ですか? パート2

これは、スニペットに関する記事の第2部です。 最初は、それがどのようなメカニズムであるのか、なぜ必要なのか、どのように適用するのかについて説明しました。 後半では、スニペットの作成方法について説明します。



たとえば、非常に単純な一般化された状況を考えてみましょう。非表示の一時データをページの本文に保存する必要があります。 以前は、非表示フィールドがこれに使用されていましたが、asp.netにはViewStateメカニズムがあります。 ViewStateの使用、パフォーマンスおよびページサイズへの影響については触れません。 明らかに、慎重に使用する必要があります。 そのため、このようなコード構築用のスニペットを作成しましょう。

public int ViewStatePropperty { get { object o = ViewState [ "ViewStatePropperty" ]; return (o!= null )? int )o:0; } {ViewState [ "ViewStatePropperty" ] = value ; }} *このソースコードは、 ソースコードハイライターで強調表示されました。




値が通常のようにプライベートフィールドに格納されず、ViewStateに格納される最も単純なプロパティ。 このコードには、タイプ、名前、デフォルト値の3つの可変要素があることに注意してください。 さらに、コード内のタイプ文字列は2回使用され、名前文字列は3回使用されます。 最後にスニペットを定義しましょう。 実際、スニペットは特別な方法で定義されたxmlファイルであり、この例の実装は次のとおりです。

<? xml バージョン = "1.0" encoding = "utf-8" >

< CodeSnippets xmlns = " schemas.microsoft.com/VisualStudio/2005/CodeSnippet " >

< CodeSnippet Format = "1.0.0" >

< ヘッダー >

< タイトル > propv </ タイトル >

< ショートカット > propv </ / ショートカット >

< 説明 >簡単なスニペットの例</ / 説明 >

< 著者 > Xaoc、Habrahabrプロジェクト用</ 著者 >

< SnippetTypes >

< SnippetType > Expansion </ SnippetType >

</ SnippetTypes >

</ ヘッダー >

< スニペット >

< 宣言 >

< リテラル >

< id >タイプ</ id >

< ToolTip >プロパティタイプ</ ToolTip >

< デフォルト > int </ デフォルト >

</ リテラル >

< リテラル >

< ID >プロパティ</ id >

< ToolTip >プロパティ名</ ToolTip >

< デフォルト > MyProperty </ デフォルト >

</ リテラル >

< リテラル >

< ID >デフォルト</ ID >

< ToolTip >デフォルト値</ ToolTip >

< デフォルト > 0 </ デフォルト >

</ リテラル >

</ 宣言 >

< コード 言語 = "csharp" > <! [CDATA [public $ type $ $ property $

{

得る

{

オブジェクトo = ViewState ["$ property $"];

return(o!= null)? ($ type $)o:$ default $;

}

セット

{

ViewState ["$ property $"] = value;

}

} $ end $]] >

</ コード >

</ スニペット >

</ CodeSnippet >

</ CodeSnippets > *このソースコードは、 ソースコードハイライターで強調表示されています。


だから、このスニペットの説明は何ですか? 主なタグは次のとおりです。ヘッダーはむしろ外側の部分を記述し、スニペットはロジックを記述します。



ヘッダーは、値を持つタグを定義します。スニペットの名前、ショートカット(スニペットをすばやく呼び出すことができる名前です)、説明、作成者、スニペットのタイプ。 スニペットのタイプには、SurroundsWith、Expansion、およびRefactoringの3つの意味があります。 1つ目は、スニペットが選択されたテキストをラップすることを示し(標準領域スニペットはこれを行います)、2つ目はスニペットテキストが単に挿入されることを示し、3つ目はスタジオに組み込まれたリファクタリングメカニズムに使用され、カスタムスニペットでは使用できません。



リテラルはスニペットで宣言され、その値はスニペットとスニペットコード自体を使用して編集できます。 リテラルの定義方法に注意してください。その識別子、ツールチップ、デフォルト値が示されています。 次に、スニペットコードの本文でリテラル識別子が使用されます。 リテラルを強調するには、2つのドル記号「$」の間にあります。 スニペットコードの定義に加えて、Codeタグにはいくつかの属性も含まれています。言語は、スニペットのターゲット言語を示し、VB、CSharp、VJSharp、またはXMLの値を取ることができます。 区切り文字。ドル記号を別の記号に再定義できます。 Kind。スニペットのスコープを指定でき、「method body」、「method decl」、「type decl」、file、またはanyの値を取ります。 この場合、Kindは省略されますが、「type decl」として指定できます。



スニペットファイルを作成したら、どうにかしてスタジオに埋め込む必要があります。 これを行うには、メインメニューの[ツール]メニューの標準の[コードスニペットマネージャー]ダイアログを使用します。 そこにない場合は、環境がそのように構成されており、メニュー項目はツール\カスタマイズ-コマンド-ツールで見つけることができます。 それをより簡単にし、ダイアログショートカットctrl + k、ctrl + bを呼び出すことができます。 ウィンドウでは、スニペットを保存するセクションを指定し、インポートボタンをクリックしてスニペットをスタジオにインポートできます。 その後、エディターでpropvと入力し、タブを押します。 次のようなテキストを追加する必要があります。

public int MyProperty { get { object o = ViewState [ "MyProperty" ]; return (o!= null )? int )o: 0 ; } {ViewState [ "MyProperty" ] = valueを設定します }} *このソースコードは、 ソースコードハイライターで強調表示されました。




以上です。 完全を期すために、スニペットxml-fileスキームの説明へのリンクを提供します。

https://msdn.microsoft.com/en-us/library/ms171418(en-us、vs。80).aspx(残念ながら、URL内の括弧のため、Habrはハイパーリンクを誤って選択し、そのままブラウザにコピーします) そこで、追加の知識を得て、さらに複雑で便利なスニペットを作成する方法を学ぶことができます。



PS:「記事にエラーはありません!」-残念ながらこれを言うことはできませんが、見つかったエラーに注意を払っていただければ幸いです。



All Articles