テンプレートマクロ
コードテンプレートを適用すると、ReSharper はいくつかの値でテンプレートパラメーターを初期化します。これらの値を計算するために、テンプレートマクロを使用します。テンプレートマクロは、周囲のコンテキスト(たとえば、現在のファイル名、現在のソリューション名、名前空間、クリップボードコンテンツなど)に基づいて多くの有用なデータを取得できます。さらに、マクロはコード補完アクションを呼び出し、型、変数、タグなどを推測および提案できます。
新しいテンプレートパラメーターを宣言するとすぐに、パラメーターはテンプレートエディターの右側に表示され、その下にマクロを選択ハイパーリンクが表示されます。このリンクをクリックすると、パラメーターのマクロを選択できます。ソーステンプレートを作成する場合、マクロは [Macro]
属性を使用して指定されます。
一部のマクロは、必要なアイテムを提供するだけです。例: 現在のソリューション名またはタグ名を提案します。他のマクロには独自のパラメーターがあり、指定する必要があります。たとえば、テンプレートパラメーターに型の変数を提案するマクロを選択した場合、対応するマクロパラメーターの型を指定する必要があります。マクロを選択ダイアログでマクロを選択すると、太字でマクロパラメーターを認識できます。
テンプレートパラメーターにマクロを定義しない場合、テンプレートを適用するときにパラメーター名が挿入されます。パラメーターが編集可能な場合、ユーザーはこの名前を編集することを提案されます。
テンプレートマクロの使用箇所を把握する最良の方法は、ReSharper の事前定義済みテンプレートの豊富なセットを調べることです。
テンプレートマクロのリスト
次の表に、テンプレートの変数に使用できるすべてのマクロを示します。
式列には、[Macro(Target = "myVariable", Expression = "suggestVariableName()")]
などのソーステンプレートで使用できるマクロ式がリストされています。
説明列には、ユーザーインターフェースでテンプレート変数を作成または編集したときにマクロを選択ダイアログに表示されるマクロが一覧表示されます。
式 | 説明 | 詳細 |
---|---|---|
| 変数で表されるコレクションの要素型を推測する | コレクションの要素のコードと推測のタイプを分析します。 マクロパラメーター:
|
| インデックス変数の名前を提案する | 評価ポイントでのインデックス変数の一意の名前を提案します |
| 拡張子なし、英数字以外のすべての文字をアンダースコアに置き換えた現在のファイル名 | 現在のファイル名を拡張子なしで評価し、英数字以外のすべての文字をアンダースコアに置き換えます |
| 英数字以外のすべての文字をアンダースコアに置き換えた、拡張子のないプライマリファイルの名前 | 拡張子を付けず、英数字以外のすべての文字をアンダースコアに置き換えたプライマリファイル名に評価します。 |
| 配列変数を提案する | 型が配列型の変数を提案します |
| 型への参照を挿入する | 選択したタイプ名に評価します マクロパラメーター:
|
| 最初の文字が大文字の別の変数の値 | 文字列値を大文字にする (つまり、最初の文字を大文字に変更します) マクロパラメーター:
|
| クリップボードの内容 | 現在のテキストクリップボードコンテンツを評価します |
| 基本補完を実行する | 変数が評価されるポイントで基本コード補完リストを表示します |
| スマートな補完を実行する | 変数が評価されるポイントでスマートコード補完リストを表示します |
| 型の補完を実行する | 変数が評価される時点で型補完リストを表示します |
| 一定値 | 指定された定数値に評価します マクロパラメーター:
|
| タイプメンバー名を含む | 最も内側にある型メンバーの短い名前に評価されます (たとえばメソッドまたはプロパティ) |
| タイプ名を含む | 最も内側にある型の短い名前に評価されます |
| 包含参照型 | 最も内側にある型の参照に評価します |
| 現在のコンテキストを説明する項目のリスト | 現在のコンテキストを説明するアイテムのリストを提供します。これには、型名、名前空間名などを含むファイル名が含まれます。 |
| ファイルが指定された形式で作成された日時 | 現在のファイルのファイル作成日時に評価します マクロパラメーター:
|
| 指定した形式の現在の日付 | 評価の結果は、現在日付になります マクロパラメーター:
|
| 指定された形式の現在の日付と時刻 | 現在の日付と時刻に評価します マクロパラメーター:
|
| 名前空間を含む | 含まれている名前空間の名前に評価されます |
| 最初の文字が小文字の別の変数の値 | 文字列値を切り捨てる (つまり、最初の文字の大文字と小文字を小文字に変更します) マクロパラメーター:
|
| デフォルトの名前空間 | 現在のプロジェクトのデフォルトの名前空間に評価されます |
| 現在のファイルのデフォルトネームスペース | 現在のファイルのデフォルトの名前空間に評価します |
| 現在のファイル名 | 現在のファイル名に評価されます |
| 現在の拡張子のないファイル名 | 拡張子なしの現在のファイル名に評価します |
| 現在のユーザーの完全なユーザー名 | 現在のユーザーのフルネームに評価されます |
| 予想されるコレクションタイプの推測要素タイプ | この時点でコレクション型が予想される場合、要素型を推測します |
| この時点で予想される推測タイプ | この時点で予想される型を推測します |
| 新しい GUID | 新しいグローバル一意識別子を生成します (GUID) |
| 現在行番号 | マクロが評価される行の番号に評価します |
| コンマで区切られた値のリスト | 補完リストで指定された値のリストを表示します マクロパラメーター:
コンマ( |
| 現在のプロジェクト出力アセンブリ名 | 現在のプロジェクトの出力アセンブリ名に評価されます |
| 型のパラメーターを提案する | 指定された型のパラメーターを提案します マクロパラメーター:
|
| 現在のプロジェクトの名前 | 現在のプロジェクト名に評価されます |
| 現在のソリューション名 | 現在のソリューション名に評価されます |
| スペースが '_' で置き換えられる別の変数の値 | スペースをアンダースコアに変更します (つまり、「何か役に立つことをする」は「do_something_useful」になります。) マクロパラメーター:
|
| 列挙変数を提案する | 列挙可能な可視変数を提案します (つまり、foreach ループでコレクションとして使用されます) |
| 変数の名前を提案する | 変数宣言 (変数名が立つべき場所) で実行されると、変数の名前を提案します |
| 型の変数を提案する | 指定された型の変数を提案します マクロパラメーター:
|
| 新しい変数の型を提案する | テンプレートで宣言された新しい変数の型を提案します |
| 英数字以外のすべての文字をアンダースコアに置き換えた大文字の現在のファイル名 | 現在のファイル名を大文字で評価し、英数字以外のすべての文字をアンダースコアに置き換えます |
| 現在のユーザーの略称 | 現在のユーザー名に評価されます |
| エンティティの名前 | 可能な場合は「nameof(entity)」、そうでない場合は「entity」に評価されます |
| DependencyProperty 型 | 現在のフレームワークに固有の依存関係プロパティの型に評価します |
| 完全なタグ名 | 含まれているタグの完全な名前を挿入します |
| タグによる XML 属性名の提案 | 現在のドキュメントの同じタグで使用されている XML 属性名を提案します |
| XML 属性名を提案する | 現在のドキュメントで使用されている XML 属性名を提案します |
| XML タグ名を提案する | 現在のドキュメントで使用されている XML タグ名を提案します |
| タグ名 | 名前空間を含まないタグの名前を挿入します |
| タグ名前空間 | 含まれているタグの名前空間を挿入します |
| 必要な型にキャスト (キャストが必要な場合) | 代入式の左側で期待される型へのキャストを (必要に応じて) 挿入します |
| ファイルヘッダー | 設定で指定されたファイルヘッダーを挿入します |
| テスト対象 | テストが生成されるクラスのタイプを挿入します |
| タグによる属性名の提案 | 現在のドキュメントの同じタグで使用されている属性名を提案します |
| 属性値を提案する | 現在の HTML タグ属性の属性値を提案します |
| タグ名を提案する | 現在のドキュメントで使用されているタグ名を提案します |
| ASP.NET Masterpage コンテンツジェネレーター | 変数が評価される時点でマスターページコンテンツプレースホルダーのコンテンツを生成します |
| ASP.NET MVC アクション | 変数が評価される時点で使用可能な ASP.NET MVC アクションを含む補完リストを表示します |
| ASP.NET MVC コントローラー | 変数が評価される時点で使用可能な ASP.NET MVC コントローラーを含む補完リストを表示します |
| サーバー側のタグが選択されている場合は runat="server" を挿入します | サーバー側タグが選択されている場合は runat="server" を挿入します |
| 非現実的なログカテゴリ | ログカテゴリのリストを評価します |
| 非現実的なログの詳細度 | ログの詳細レベルのリストを評価する |
| Unreal テンプレートマクロを置き換える | Unreal テンプレートマクロを置き換えます |
| const を含む型名を含む | const 指定子を使用して、最も内側にある型の短い名前に評価します |
| 関数パラメーターリストを含む | 包含関数のパラメーター名のコンマ区切りリストに評価されます |
| ドキュメント: 名前付き関数型の型 | 各関数パラメーターのテンプレート行を複製し、name を指定してパラメーター型に評価します |
| ドキュメント: 関数のパラメーター名 | 各関数パラメーターのテンプレート行を複製し、パラメーター名を評価します |
| ドキュメント: 関数パラメーターの型 | 各関数パラメーターのテンプレート行を複製し、パラメーター型に評価します |
| ドキュメント: 関数の戻り値 | 関数の戻り値の型が void でない場合にのみ、包含するテンプレート行を保持します。 |
| ドキュメント: テンプレートパラメーター名 | 各テンプレートパラメーターに含まれるテンプレート行を複製し、テンプレートパラメーター名 |
| ドキュメント: マクロパラメーター名 | 各マクロパラメーターのテンプレート行を複製し、マクロパラメーター名に評価します |
| ドキュメント: 関数の戻り値の型 | 関数の戻り値の型を評価する |
| ドキュメント: 実体の短い名前 | 文書化されているエンティティの短縮名を評価する |
| ドキュメント: エンティティ修飾名 | 文書化されているエンティティの修飾名を評価する |
| 文字列への列挙: 列挙子名 | 各列挙子の含まれているテンプレート行を複製し、列挙子の名前に評価します |
| 文字列への列挙: 文字列としての列挙子名 | 各列挙子の含まれているテンプレート行を複製し、列挙子の名前を持つ文字列に評価します |
| 文字列への列挙: Enum 名 | アクションが呼び出される列挙型の名前 |
| ドキュメントの改行と列挙型から文字列へのテンプレート | ドキュメントと列挙型から文字列へのテンプレートの改行に評価されます |
| ファイルヘッダー (C++) | 設定で指定されたファイルヘッダーを挿入します |
| プリコンパイル済みヘッダーファイルインクルードディレクティブ | プロジェクトがプリコンパイル済みヘッダーを使用しない場合は、プリコンパイル済みヘッダーファイルの include ディレクティブまたは空の文字列に評価されます。 |
関連ページ:
テンプレートを適用する
この節では、既存のコードテンプレートを適用する方法について説明します。ライブテンプレートを使用してソースコードを作成する、コードフラグメントをテンプレートで囲む、テンプレートからファイルを作成する、接尾辞テンプレートとソーステンプレートを適用する方法も学習できます。テンプレートの保管ライブテンプレートを使用してソースコードを作成する
テンプレートパラメーターを宣言する
コードテンプレートは、周囲のコンテキストに合わせて調整したり、適用時にインタラクティブに動作したりすることもできます。これはすべて、テンプレートパラメーターとテンプレートマクロを使用して行われます。テンプレートエディターでテンプレートパラメーターを定義および編集できます。パラメーター(接頭辞と接尾辞が)を入力するとすぐに、テキスト領域の右側のパラメーターセクションで使用できるようになります。次に、マクロを選択をクリックしてその動作を構成できます。テンプレート内の任意のパラメーターを複数回使用でき...
ソーステンプレート
従来、テンプレートまたはスニペットは、ソースコードの外部で保存および管理されていました。通常、テンプレートは汎用定型コードをすばやく作成するのに役立つため、これは理にかなっています。これらの目的のために、ReSharper は多くの事前定義されたライブテンプレート、サラウンドテンプレート、およびファイルテンプレートを提供します。これらのタイプの独自のテンプレートを作成することもできます。ただし、現在のプロジェクトまたはソリューションにのみ関連する繰り返し可能なコードを生成したい場合があります。R...
テンプレートの保管
ReSharper のコードテンプレートに関する興味深い点の 1 つは、分散ストレージです。コードテンプレートは、社内組織の詳細を十分に理解していなくても、使用して管理するのに優秀に動作します。ただし、テンプレートの編集や共有に問題が発生したり、複雑な使用シナリオが発生した場合は、これらの詳細を調べる必要があります。定義済みのテンプレート:すべての事前定義テンプレートは ReSharper インストールに保管されています。事前定義されたテンプレートの削除を含むすべての必要な変更は設定レイヤーに...