Как создавать более умные / сложные фрагменты в коде 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
как упоминается как "префикс" фрагмента.