Шаблон проекта/объекта Visual Studio Параметр Логика

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

После 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 $check для соответствия строки, то есть должен проверить, что TrueForNullOrEmpty должен равняться "true". Также было искушено писать $if $($ shouldCheckForNullOrEmpty $== "true" ), но это не сработает.

Одиночные инструкции с одиночными выражениями довольно просты, поэтому теперь для более сложного примера:

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) $, если $(выражение2) $endif $endif $

или → $if $(expression1) statement $else $$ if $statement $endif $$ endif $

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

Ответы

Ответ 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)

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