4

我正在观看 Stephen A Bohlen 的出色的Summer of NHibernate系列,并且一直在观看他与 CodeRush 的互动。我最近安装了 ReSharper(我是 ReSharper 新手),我正在尝试找到 Stephen 用 CodeRush(切线)展示的一些 ReSharper 生产力等价物。

例如,他演示了突出显示如下所示的代码块:

ISession session = GetSession();
session.xxx

然后把它变成

using (ISession session = GetSession())
{
   session.xxx
}

他通过使用 using 语句突出显示他想要包围的块然后调用一些 CodeRush 模板来做到这一点。我一直无法弄清楚如何用 ReSharper 做同样的事情。我找到了 ReSharper Surround 命令(在 Code 命令中),但是当您选择using语句时,它确实围绕着您突出显示的代码块,但它似乎不够聪明,无法将第一行放在 using 子句中。也就是说,它导致:

using () 
{
  ISession session = GetSession();
  session.xxx
}            

这需要我将第一行移到 using 子句中。我错过了更简单的方法吗?

4

5 回答 5

13

Resharper 提供了这种能力。如果你的类实现了 IDisposable,只需按 Alt-Enter:

(删除图像死链接“之前”)
(删除图像死链接“之后”)

您还必须将光标放在变量名上。像这样:SShot1 SShot2 SShot3

于 2008-11-28T21:29:31.450 回答
1

我只是在看那一集,想知道我是否也有同样的问题。根据这里的线索,我发现如果我有这个代码:

1        IList<Supplier> returnValue;
2        ISession session = SessionProvider.GetSession();
3        returnValue = session.CreateQuery("select from Supplier s").List<Supplier>();
4        return returnValue;

如果我将光标放在第 2 行的会话变量上,然后按 Alt-Enter,它会给我:

1        IList<Supplier> returnValue;
2        using (ISession session = SessionProvider.GetSession())
3        {
4            returnValue = session.CreateQuery("select from Supplier s").List<Supplier>();
5        }
6        return returnValue;

它确实让我有好几次,因为我没有将光标放在变量名上,但我确实让它工作了。

顺便说一句,我真的更喜欢观看他们使用 Code Rush 的演示,因为您可以直观地看到正在发生的事情。我想知道如果我不演讲,这是否会妨碍我。

而且您不是 Resharper 新手:您是 Resharper Padawan :)

沼泽

于 2009-01-09T02:03:03.793 回答
1

或者,如果您处于已经输入 using 的情况,并且您想用大括号包装大量代码......您可以执行CTRL- E+U然后7.

它将用大括号包裹选择。

于 2008-11-28T21:35:27.570 回答
0

我想知道我的 ReSharper 设置是否有问题。当我的光标在

Class1 c = new Class1();

在下面的代码示例中,ReSharper 仅建议使用 'var'。如果既不提供拆分声明和赋值也不提供使用构造

(Mindaugas——您对 DirectoryInfo 的评论当然是正确的。我的错。希望这个示例更清楚地说明了我所看到的内容)。

using System;

namespace DataAccessLayerTest {
    public class Class1 : IDisposable {
        public void Moo()
        {
            Console.Out.WriteLine("Moo");
        }
        public void Dispose()
        {
        }
    }

    public class Class2 {
        public void m()
        {
            Class1 c = new Class1();
            c.Moo();
        }
    }
}
于 2008-11-29T18:04:45.823 回答
0

在 Visual Studio 2013 上是++CTRL这 应该会带来以下对话框EU

在此处输入图像描述

然后Ausing.

希望这可以节省您一些时间。

于 2015-06-11T07:06:52.643 回答