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

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

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

private readonly DependencyOne dependencyOne;
private readonly DependencyTwo dependencyTwo;

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 08 июля 2018

А с выпуском 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, нажмите tab , и ваш код будет написан заглавными буквами. Вы можете заменить "var1 / var2" на то, что вы хотите.

0 голосов
/ 30 июня 2018

Решение с кодом Visual Studio 1.24:

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

напишите следующее в 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, как указано в качестве «префикса» фрагмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...