Поскольку я видел только несколько сообщений на эту тему, но не получил подробного объяснения логики параметров в шаблонах для Visual Studio, я решил опубликовать это здесь.
Следуя статье MSDN , вы можете добавить в шаблон пользовательские параметры, которые можно изменить с помощью мастера Wizard , если вы хотите их изменить.
В любой файл шаблона (кроме самого файла шаблона) вы можете добавить логику на основе параметров. Есть только три ключевых слова, которые будут использоваться с логикой. $ 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 );
}
Как вы можете сказать, это оператор переключения для режима параметров. Вы можете заметить, что $ elseif $ нет, поэтому вам нужно сделать его $ else $ $ if $, но в конце придется добавить дополнительный $ endif $.
Наконец, мне еще предстоит найти символы и или или для логики. Я справился с этим, просто используя логическую эквивалентность:
и -> $ if $ (expression1) $ if $ (expression2) $ endif $ endif $
или -> $ if $ (выражение1) оператор $ else $ $ if $ оператор $ endif $ $ endif $
Надеюсь, это кому-нибудь поможет.