5

我是 CodeRush 及其模板理念的忠实粉丝。在我目前的工作中,我们将进行大量的配对,并且共识是对 ReSharper (v6) 的偏好,这几乎使我处于必须使用它的地方。

我不想在这里开始 CodeRush/Resharper 战争。Resharper 有很多值得喜欢的地方,但有一件事我在 ReSharper 中遇到了困难。

ReSharper 的 Live 模板机制很好,它没有像 CodeRush 那样输入的内置概念(至少我不能说)。一个简单的例子如下。生成以下代码:

public String MyStringProperty { get; set; }

在 CodeRush 中...我可以输入“as”(“a”代表 AutoProperty,“s”代表字符串),然后只需更改属性的名称。

在 ReSharper 中,我需要输入“prop”(表示属性),然后设置类型和名称。

ReSharper 的实时模板中似乎没有关于类型识别或类型快捷方式的类似概念。因此,似乎没有任何类似于大量的两个和三个字符模板来为您提供预先输入的变量、属性、方法等......

所以,在所有背景之后,最后的问题。有没有办法在 ReSharper 中复制这种“类型化模板”的概念,而无需为每个模板/类型组合创建新的实时模板?

4

2 回答 2

4

目前,ReSharper 不支持您所指的使用模式。但是,我可以想到两种选择来实现这一点。

  • 一种选择是为所有常见用例生成实时模板。我使用这个文件,但请注意它没有用 R#6.1 测试过。
  • 另一种选择是简单地编写一个插件来执行此操作。ReSharper SDK 有一个 HtmlZen 示例,该示例执行非常相似的操作,即将 DSL 字符串扩展为一段代码。您可以轻松地为助记符扩展做同样的事情。

请注意,无论您选择哪个选项,您都无法通过按下来扩展模板Space——这在 ReSharper 中是不可能的。

如果您还有其他问题,请告诉我。

德米特里

于 2011-12-28T14:18:52.680 回答
3

我认为 Resharper 不可能拥有一个模板,该模板采用一个字母名称后跟一个字母类型。您必须为每种类型创建一个新模板,例如“as”并将其定义为:

public string $NAME$ { get; set; }

您可能想要更改它的可用位置,即允许类型成员声明的 C# 文件。

您可以将“prop”模板重命名为“a”,然后输入:“a”、TAB、“s”、TAB、TAB、“property_name”、TAB

于 2011-12-28T10:07:13.690 回答