ReSharper的CodeRush样式类型模板

时间:2011-12-27 16:09:48

标签: c# resharper coderush

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

我不打算在这里开始CodeRush / Resharper战争。 Resharper有很多值得关注的东西,但有一件事我很难在ReSharper中过去。

ReSharper的Live模板机制,很好,没有内置的概念来输入CodeRush的方式(至少不是我所知道的)。一个简单的例子如下。生成以下代码:

public String MyStringProperty { get; set; }

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

在ReSharper中,我需要输入“prop”(对于Property),然后设置类型和名称。

在ReSharper的实时模板中似乎没有关于类型感知或类型快捷方式的类似概念。因此,似乎没有任何类似于众多的两个和三个字符模板,以获得预先输入的变量,属性,方法等...

所以,最后问题毕竟是那个背景。在没有为每个模板/类型组合创建新的实时模板的情况下,有没有办法在ReSharper中复制“类型模板”这个概念?

2 个答案:

答案 0 :(得分:4)

目前,ReSharper不支持您所指的使用模式。 然而,我可以考虑两种方法来实现这一目标。

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

请注意,无论您选择哪个选项,都无法通过按 Space 来扩展模板 - 这在ReSharper现在根本无法实现。

如果您有其他问题,请与我们联系。

的Dmitri

答案 1 :(得分:3)

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

public string $NAME$ { get; set; }

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

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