Visual Studio Project / Элемент шаблона Логика параметров - PullRequest
27 голосов
/ 15 июля 2011

Поскольку я видел только несколько сообщений на эту тему, но не получил подробного объяснения логики параметров в шаблонах для 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 $

Надеюсь, это кому-нибудь поможет.

1 Ответ

0 голосов
/ 10 апреля 2018

Для логики and и or
and:
&&
в то время как or:
||

Итак, оператор if с and будет выглядеть так:

if ((a != null)&&(a !=""))
{
    Console.Write(a);
}

И оператор if с or будет выглядеть так:

if ((b != null)||(b >= 5))
{
    Console.Write(b);
}

Для шаблона вы можете экспортировать файл * .cs в качестве шаблона. Он находится в Project> Export Template ...

(я использовал VisualStudios 2017)

Надеется, что это поможет.

...