このトピックに関する投稿は数件しか見たことがなく、Visual Studio のテンプレートのパラメーターのロジックに関する詳細な説明がないため、ここに投稿することにしました。
MSDN の記事に従って、カスタム パラメーターをテンプレートに追加し、必要に応じてウィザードで変更することができます。
テンプレートの任意のファイル (テンプレート ファイル自体以外) で、パラメーターに基づいてロジックを追加できます。ロジックで使用するキーワードは 3 つだけです。$if$ ( %expression% )、$else$、および $endif$。テンプレートファイルに次のものが含まれているとします。
public string foo( string a )
{
return string.Format( @"foo( {0} );", a );
}
そして、「a」が null か空かをチェックするかどうかのロジックを追加します。
public string foo( string a )
{
$if$ ( $shouldCheckForNullOrEmpty$ == true )
if ( !string.IsNullOrEmpty( a ) )
$endif$
return string.Format( @"foo( {0} );", a );
}
もちろん、if ステートメントに中括弧を追加して、複数の論理ブロックが必要になる場合があります。
それほど悪くはありませんが、これにはいくつかのトリックがあります。$if$文字列一致のチェック、つまり shouldCheckForNullOrEmpty は「true」に等しくなければなりません。また、$if$ ($shouldCheckForNullOrEmpty$ == "true") を書きたくなりましたが、うまくいきません。
単一の式を持つ単一の if ステートメントは非常に単純なので、もう少し複雑な例を次に示します。
public string foo( string a )
{
$if$ ( $parameterCheckMode$ == ifNullOrEmpty )
if ( !string.IsNullOrEmpty( a ) )
$else$ $if$ ( $parameterCheckMode$ == throwIfNullOrEmpty )
if ( string.IsNullOrEmpty( a ) )
throw new ArgumentException();
$endif$ $endif$
return string.Format( @"foo( {0} );", a );
}
お分かりかもしれませんが、これはパラメーター モードの switch ステートメントです。$elseif$ がないので、$else$ $if$ にする必要がありますが、最後に余分な $endif$ を追加する必要があります。
最後に、ロジックのand or orシンボルをまだ見つけていません。論理的等価性を使用するだけでこれを回避しました。
and -> $if$ (式1) $if$ (式2) $endif $endif$
または -> $if$ ( 式 1 ) 文 $else$ $if$ 文 $endif$ $endif$
うまくいけば、これは誰かを助けます。