如何在Visual Studio / Visual Studio代码中生成更智能/复杂的代码段?

时间:2018-05-09 09:56:06

标签: visual-studio visual-studio-code

问题:我正在寻找创建复杂代码段的方法。在我们公司,我们有更大的功能,几乎看起来像样板,我觉得可以更容易。

理想的解决方案:我想创建一些内容,类似于代码片段的工作方式,但适合更复杂的代码生成。例如,请参阅以下代码,这是我们生成的代码的典型代码:

private readonly DependencyOne dependencyOne;
private readonly DependencyTwo dependencyTwo;

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

基本上我只想输入两个类名,然后从中生成构造函数和两个相关字段。如果可能的话,我想在代码中的正确位置添加这些字段,就像IntelliSense的快速修复如何在代码中自动找到放置字段的正确位置一样。

我之所以无法在构造函数之上生成它,是因为有些方法会生成,这些方法不是构造函数,因此不会驻留在代码的顶部

我如何实现这个理想的解决方案?

2 个答案:

答案 0 :(得分:0)

Visual Studio Code 1.24解决方案:

在Visual Studio代码中,您可以通过创建片段JSON文件来指定所需的片段。请参阅this doc以了解如何在VS Code中创建新的代码段。

在language.json中编写以下内容,language将是您要为其创建代码段的任何语言:

"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来使用该代码段,如代码段的“前缀”所述。

答案 1 :(得分:0)

在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"
},

为此,您将只键入两个名称-我已经输入了它,因此您键入了未大写字母版本,该代码段将自动大写类名。颠倒这些很容易,但是会有更多的代码。输入第二个类名/变量后,单击 tab ,您的代码将正确大写。您可以将“ var1 / var2”替换为您想要的任何内容。