由于我只看到了一些关于该主题的帖子,但没有深入解释 Visual Studio 模板中参数的逻辑,所以我想我会在这里发布。
在MSDN 文章之后,您可以将自定义参数添加到模板中,如果您想更改它们,可以使用向导进行更改。
在模板的任何文件(除了模板文件本身)中,您都可以根据参数添加逻辑。只有三个关键字与逻辑一起使用。$if$ (%expression%)、$else$ 和 $endif$。所以说我在模板文件中有以下内容:
public string foo( string a )
{
return string.Format( @"foo( {0} );", a );
}
我们想添加一些逻辑来判断我们是否要检查“a”是空还是空
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$。
最后,我还没有找到逻辑的和或或符号。我通过使用逻辑等价来解决这个问题:
和 -> $if$ ( 表达式 1 ) $if$ ( 表达式 2 ) $endif $endif$
或 -> $if$ ( expression1 ) 语句 $else$ $if$ 语句 $endif$ $endif$
希望这可以帮助某人。