Логика параметров шаблона проекта / элемента Visual Studio

Так как я видел только несколько сообщений по этой теме, но без подробного объяснения логики параметров в шаблонах для Visual Studio, я решил разместить это здесь.

Следуя статье MSDN , вы можете добавить в свой шаблон пользовательские параметры, которые можно изменить с помощью мастера , если вы хотите их изменить.

В любом файле шаблона (другой чем сам файл шаблона) вы можете добавить логику на основе параметров. В логике можно использовать только три ключевых слова. $ if $ (% выражение%), $ 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 $ (выражение1) $ if $ (выражение2) $ endif $ endif $

или -> $ if $ (выражение1) оператор $ else $ $ if $ statement $ endif $ $ endif $

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

28
задан maschall 15 July 2011 в 15:02
поделиться

1 ответ

Для логики 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)

Надеюсь, это поможет.

1
ответ дан 28 November 2019 в 03:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: