Как создавать более умные / сложные фрагменты в коде Visual Studio/Visual Studio?

Проблема: я ищу способ создания сложных фрагментов. В нашей компании у нас есть большие функции, которые почти кажутся шаблонными, и я чувствую, что это можно сделать намного проще.

Желаемое решение: я хочу создать что-то похожее на работу фрагментов кода, но подходящее для более сложной генерации кода. Например, посмотрите следующий код, который типичен для того, что мы генерируем:

private readonly DependencyOne dependencyOne;
private readonly DependencyTwo dependencyTwo;

public ClassName(DependencyOne dependencyOne, DependencyTwo dependencyTwo)
{
    this.dependencyOne = dependencyOne;
    this.dependencyTwo = dependencyTwo;
}

В основном я хочу только ввести два имени класса, и из этого генерировать конструктор и два связанных поля. Если возможно, я хочу добавить эти поля в правильную позицию в коде, во многом подобно тому, как Quick Fix IntelliSense автоматически находит правильную позицию в вашем коде для размещения полей.

Причина, по которой я не могу просто сгенерировать его над конструктором, заключается в том, что будут сгенерированы некоторые методы, которые не являются конструкторами и, следовательно, не находятся в верхней части кода.

Как мне достичь этого желаемого решения?

2 ответа

А с выпуском v1.25 работает следующее:

"Constructor and variables" : {
    "prefix" : "ctor",
    "body": [
        "private readonly ${1/(.*)/${1:/capitalize}/} ${1:var1};",
        "private readonly ${2/(.*)/${1:/capitalize}/} ${2:var2};",
        "",
        "public ClassName(${1/(.*)/${1:/capitalize}/} $1, ${2/(.*)/${1:/capitalize}/} $2)",
        "{",
        "    this.$1 = $1;",
        "    this.$2 = $2;",
        "}",
    ],
    "description": "your description"
},

Для этого вы будете вводить только два имени - я сделал это так, чтобы вы вводили некапитализированную версию, а во фрагменте автоматически использовались имена классов. Было бы легко изменить их, но было бы намного больше кода. После того, как вы войдете во вторую вкладку имени класса /var и ваш код будет написан заглавными буквами. Вы можете заменить " var1 / var2 "с тем, что вы хотите.

Решение с помощью Visual Studio Code 1.24:

В коде Visual Studio вы можете указать фрагменты по своему желанию, создав файл JSON фрагмента. Пожалуйста, обратитесь к этому документу, чтобы узнать, как создать новый фрагмент кода VS.

напишите следующее в language.json, языком будет любой язык, для которого вы хотите создать фрагмент:

"Constructor - A unique name" : {
    "prefix" : "constructor",
    "body": [
        "private readonly ${DependencyOne} ${dependencyOne};",
        "private readonly ${DependencyTwo} ${dependencyTwo};",
        "",
        "public ClassName(${DependencyOne} ${dependencyOne}, ${DependencyTwo} ${dependencyTwo})",
        "{",
        "    this.${dependencyOne} = ${dependencyOne};",
        "    this.${dependencyTwo} = ${dependencyTwo};",
        "}",

            ],
    "description": "description of what it does"
}

выполнив шаги в doc и написав json, вы сможете использовать фрагмент, набрав constructor как упоминается как "префикс" фрагмента.

Другие вопросы по тегам