94

您使用哪些适用于C#的 ReSharper 4.0 模板?

让我们以以下格式分享这些内容:


[标题]

可选描述

快捷方式:快捷方式
适用于: [AvailabilitySetting]

// Resharper template code snippet
// comes here

宏属性(如果存在):

  • Macro1 - 值 - EditableOccurence
  • Macro2 - 值 - EditableOccurence

4

36 回答 36

31

简单的 Lambda

如此简单,如此有用 - 一个小 lambda:

快捷方式:x

可用:允许表达式的 C#。

x => x.$END$

宏:无。

于 2011-02-15T07:45:49.033 回答
22

实施“处置(布尔)”方法

实现Joe Duffy 的 Dispose 模式

捷径:处置

适用于:允许类型成员声明的 C# 2.0+ 文件

public void Dispose()
{
    Dispose(true);
    System.GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
    if (!disposed)
    {
        if (disposing)
        {
            if ($MEMBER$ != null)
            {
                $MEMBER$.Dispose();
                $MEMBER$ = null;
            }
        }

        disposed = true;
    }
}

~$CLASS$()
{
    Dispose(false);
}

private bool disposed;

宏属性

  • 成员- 建议 System.IDisposable 的变量 - 可编辑的出现 #1
  • CLASS - 包含类型名称
于 2008-10-09T15:33:46.693 回答
14

为某种类型创建新的单元测试夹具

快捷方式: ntf 适用
于:允许类型成员声明或命名空间声明的 C# 2.0+ 文件

[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
    [NUnit.Framework.TestAttribute]
    public void $Test$()
    {
        var t = new $TypeToTest$()
        $END$
    }
}

宏:

  • TypeToTest - 无 - #2
  • 测试- 无 - V
于 2008-10-09T12:09:05.437 回答
13

检查字符串是否为空或空。

如果您使用的是 .Net 4,您可能更喜欢使用 string.IsNullOrWhiteSpace()。

快捷键:sne

适用于:允许表达式的 C# 2.0+。

string.IsNullOrEmpty($VAR$)

宏属性

  • VAR - 建议一个字符串类型的变量。可编辑 = 真。
于 2011-02-15T18:51:45.930 回答
11

创建新的独立单元测试用例

快捷方式: ntc 适用
于:允许类型成员声明的 C# 2.0+ 文件

[NUnit.Framework.TestAttribute]
public void $Test$()
{
    $END$
}

宏:

  • 测试- 无 - V
于 2008-10-09T12:10:12.423 回答
10

为当前类型声明一个 log4net 记录器。

快捷方式:日志

适用于:允许类型成员声明的 C# 2.0+ 文件

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));

宏属性

  • TYPE - 包含类型名称
于 2009-05-15T23:23:04.760 回答
9

MS 测试单元测试

使用 AAA 语法和单元测试艺术中的命名约定的新 MS 测试单元测试

快捷方式:测试(或 tst,或任何您想要的)
可用于:允许类型成员声明的 C# 2.0+ 文件

[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
    // Arrange
    $END$

    // Act


    // Assert

}

宏属性(如果存在):

  • MethodName - 被测方法的名称
  • StateUnderTest - 您尝试测试的状态
  • ExpectedBehavior - 您期望发生的事情
于 2010-08-27T22:08:42.080 回答
8

检查变量是否为空

快捷方式: ifn 适用
于: C# 2.0+ 文件

if (null == $var$)
{
    $END$
}

检查变量是否不为空

快捷方式: ifnn 适用
于: C# 2.0+ 文件

if (null != $var$)
{
    $END$
}
于 2009-09-30T15:50:54.003 回答
7

断言.AreEqual

将断言添加到单元测试的简单模板

快捷方式:ae
可用于:在允许语句的 C# 2.0+ 文件中

Assert.AreEqual($expected$, $actual$);$END$

流畅版:

Assert.That($expected$, Is.EqualTo($actual$));$END$
于 2008-12-02T09:49:46.913 回答
7

为类构造函数编写符合 StyleCop 的摘要

(如果您厌倦了不断为每个构造函数输入长标准摘要,因此它符合 StyleCop 规则 SA1642)

快捷方式: csum

适用于: C# 2.0+

Initializes a new instance of the <see cref="$classname$"/> class.$END$

宏:

  • 名 - 包含类型名称 - V
于 2011-01-25T07:16:20.043 回答
7

大量的 Lambda

使用不同的变量声明创建一个 lambda 表达式,以便于嵌套。

快捷键: la、lb、lc

适用于:允许表达式或查询子句的 C# 3.0+ 文件

la定义为:

x => x.$END$

lb定义为:

y => y.$END$

lc定义为:

z => z.$END$

这类似于上面的 Sean Kearon,除了我定义了多个 lambda 实时模板以便于 lambda 嵌套。“ la ” 是最常用的,但在处理这样的表达式时,其他的也很有用:

items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));
于 2011-02-16T16:24:26.287 回答
6

依赖属性生成

生成依赖属性

快捷方式: dp适用
于:允许成员声明的 C# 3.0

public static readonly System.Windows.DependencyProperty $PropertyName$Property =
        System.Windows.DependencyProperty.Register("$PropertyName$",
                                                   typeof ($PropertyType$),
                                                   typeof ($OwnerType$));

    public $PropertyType$ $PropertyName$
    {
        get { return ($PropertyType$) GetValue($PropertyName$Property); }
        set { SetValue($PropertyName$Property, value); }
    }

$END$

宏属性(如果存在):

PropertyName - 无宏 - #3
PropertyType - 此时需要猜测类型 - #2
OwnerType - 包含类型名称 - 不可编辑出现

于 2011-04-18T07:32:24.287 回答
6

等它...

在控制台应用程序结束之前暂停用户输入。

快捷键:暂停

适用于:允许使用语句的 C# 2.0+ 文件

System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$
于 2011-02-16T16:26:39.607 回答
5

快速 ExpectedException 快捷方式

只是添加到我的单元测试属性的快捷方式。

快捷方式:ee

适用于:适用于:允许类型成员声明的 C# 2.0+ 文件

[ExpectedException(typeof($TYPE$))]
于 2009-03-12T17:22:26.440 回答
5

通知属性已更改

这是我最喜欢的,因为我经常使用它,它为我做了很多工作。

捷径:NPC

适用于:允许表达式的 C# 2.0+。

if (value != _$LOWEREDMEMBER$)
{
  _$LOWEREDMEMBER$ = value;
  NotifyPropertyChanged("$MEMBER$");
}

  • MEMBER - 包含成员类型名称。不可编辑。注意:确保这个是列表中的第一个。
  • LOWEREDMEMBER - MEMBER 的值,第一个字符小写。不可编辑。

用法:在这样的属性设置器中:

private string _dateOfBirth;
public string DateOfBirth
{
   get { return _dateOfBirth; }
   set
   {
      npc<--tab from here
   }
}

它假定您的支持变量以“_”开头。用你使用的任何东西替换它。它还假设您有一个类似这样的属性更改方法:

private void NotifyPropertyChanged(String info)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
   }
}

实际上,我使用的这个版本是基于 lambda 的(因为我喜欢我的 lambdas!)并产生以下内容。原理与上述相同。

public decimal CircuitConductorLive
{
   get { return _circuitConductorLive; }
   set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}

那时我没有使用极其优雅和有用的 PostSharp 来毫不费力地完成整个 INotifyPropertyChanged 的​​事情,也就是说。

于 2011-02-15T19:24:50.677 回答
5

AutoMapper 属性映射

快捷键: fm

适用于:允许使用语句的 C# 2.0+ 文件

.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$

宏:

  • 属性 - 可编辑的出现
  • src_property - 可编辑的出现

笔记:

我将 lambda“点”关闭,以便可以点击 . 立即获得属性智能感知。需要 AutoMapper ( http://automapper.codeplex.com/ )。

于 2011-04-04T19:36:47.490 回答
4

为 NUnit 创建测试用例存根

这可以作为单元测试运行器中出现的提醒(实现或测试的功能)(与任何其他被忽略的测试一样),

快捷方式: nts适用
于:允许类型成员声明的 C# 2.0+ 文件

[Test, Ignore]
public void $TestName$()
{
    throw new NotImplementedException();
}
$END$
于 2008-10-10T15:31:36.870 回答
4

需要时调用

在开发 WinForms 应用程序时很有用,其中方法应该可以从非 UI 线程调用,然后该方法应该将调用编组到 UI 线程。

快捷方式:inv

适用于:允许 C# 3.0+ 文件语句

if (InvokeRequired)
{
    Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
    return;
}

  • METHOD_NAME - 包含类型成员名称

您通常会将此模板用作给定方法中的第一条语句,结果类似于:

void DoSomething(Type1 arg1)
{
    if (InvokeRequired)
    {
        Invoke((Action)delegate { DoSomething(arg1); });
        return;
    }

    // Rest of method will only execute on the correct thread
    // ...
}
于 2009-03-04T09:21:55.020 回答
4

MSTest 测试方法

这有点蹩脚,但它很有用。希望有人能从中获得一些效用。

快捷方式:测试方法

适用于:C# 2.0

[TestMethod]
public void $TestName$()
{
    throw new NotImplementedException();

    //Arrange.

    //Act.

    //Assert.
}

$END$
于 2009-03-12T17:09:40.107 回答
4

新的 C# 指南

生成初始化为新生成的 guid 值的新 System.Guid 实例

快捷方式: csguid 适用 于:在 C# 2.0+ 文件中

new System.Guid("$GUID$")

宏属性

  • GUID - 新 GUID - 错误
于 2010-09-16T17:22:27.553 回答
4

NUnit 设置方法

快捷方式: setup适用
于:适用于:允许类型成员声明的 C# 2.0+ 文件

[NUnit.Framework.SetUp]
public void SetUp()
{
    $END$
}
于 2009-09-29T15:32:58.813 回答
4

NUnit 拆解方法

快捷方式: teardown 适用
于:适用于:允许类型成员声明的 C# 2.0+ 文件

[NUnit.Framework.TearDown]
public void TearDown()
{
    $END$
}
于 2009-09-29T15:37:28.943 回答
3

不需要断言调用

在开发 WinForms 应用程序时很有用,您希望确保代码在给定项目的正确线程上执行。请注意,Control实现ISynchronizeInvoke.

捷径:ani

适用于:允许 C# 2.0+ 文件语句

Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");

  • SYNC_INVOKE - 建议变量System.ComponentModel.ISynchronizeInvoke
于 2009-03-04T09:09:06.627 回答
3

创建健全性检查以确保参数永远不会为空

快捷方式: eann 适用
于:允许类型语句的 C# 2.0+ 文件

Enforce.ArgumentNotNull($inner$, "$inner$");

宏:

  • 内部- 建议参数 - #1

备注: 虽然此代码段针对开源 .NET Lokad.Shared库,但它可以轻松适应任何其他类型的参数检查。

于 2008-10-22T18:31:23.180 回答
3

新的 COM 类

快捷方式:comclass

适用于:允许类型成员声明或命名空间声明的 C# 2.0+ 文件

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
    $END$
}

  • GUID - 新的 GUID
  • 名称- 可编辑
  • 界面- 可编辑
于 2009-02-02T16:25:11.340 回答
2

Trace - Writeline,带格式

使用格式化字符串添加跟踪的非常简单的模板(如 Debug.WriteLine 已经支持)。

快捷方式: twlf
可用于:允许语句的 C# 2.0+ 文件

Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));

宏属性:

  • 参数- value- EditableOccurence
  • 蒙版- "{0}"- EditableOccurence
于 2008-11-03T16:10:58.360 回答
1

使方法虚拟

添加虚拟关键字。在使用 NHibernate、EF 或类似的框架时特别有用,其中方法和/或属性必须是虚拟的以启用延迟加载或代理。

快捷方式: v

适用于:允许类型成员声明的 C# 2.0+ 文件

virtual $END$

这里的技巧是 virtual 之后的空间,这在上面可能很难看到。实际模板是启用了重新格式化代码的“虚拟 $END$”。这允许您转到下面的插入点(用 | 表示)并输入 v:

public |string Name { get; set; }
于 2011-02-16T16:36:13.033 回答
1

等于

一般的 .NET 和默认的“equals”模板都不能轻易地敲出一个好的、简单的 Equals 方法。虽然关于如何编写一个好的 Equals 方法有很多想法,但我认为以下内容足以满足 90% 简单 案例 对于更复杂的事情——尤其是在继承方面——最好不要使用 Equals

快捷方式: equals
适用于: C# 2.0+ 类型成员

public override sealed bool Equals(object other) {
    return Equals(other as $TYPE$);
}

public bool Equals($TYPE$ other) {
    return !ReferenceEquals(other, null) && $END$;
}

public override int GetHashCode() {
    // *Always* call Equals.
    return 0;
}

宏属性

  • TYPE - 包含类型名称 - 不可编辑
于 2012-02-10T23:38:04.247 回答
1

新型 Typemock 隔离器假货

快捷方式:fake
可用于:[在允许语句的 c# 2.0 文件中]

$TYPE$ $Name$Fake = Isolate.Fake.Instance();
Isolate.WhenCalled(() => $Name$Fake.)

宏属性:
* $TYPE$ - 建议新变量的类型
* $Name$ -另一个变量的值( Type ),第一个字符小写

于 2009-10-01T11:17:58.133 回答
1

因为我现在正在使用 Unity,所以我想出了一些让我的生活更轻松的方法:


类型别名

快捷方式:ta
可用于:*.xml;*.config

<typeAlias alias="$ALIAS$" type="$TYPE$,$ASSEMBLY$"/>

类型声明

这是一个没有名字也没有参数的类型

快捷方式:tp
可用于:*.xml;*.config

<type type="$TYPE$" mapTo="$MAPTYPE$"/>

类型声明(带名称)

这是一个有名字但没有参数的类型

快捷方式:tn
可用于:*.xml;*.config

<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>

带有构造函数的类型声明

这是一个有名字但没有参数的类型

快捷方式:tpc
可用于:*.xml;*.config

<type type="$TYPE$" mapTo="$MAPTYPE$">
  <typeConfig>
    <constructor>
        $PARAMS$
    </constructor>
  </typeConfig>
</type>

ETC....

于 2010-04-20T17:22:49.340 回答
1

log4net XML 配置块

您可以直接导入模板:

<TemplatesExport family="Live Templates">
  <Template uid="49c599bb-a1ec-4def-a2ad-01de05799843" shortcut="log4" description="inserts log4net XML configuration block" text="  &lt;configSections&gt;&#xD;&#xA;    &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler,log4net&quot; /&gt;&#xD;&#xA;  &lt;/configSections&gt;&#xD;&#xA;&#xD;&#xA;  &lt;log4net debug=&quot;false&quot;&gt;&#xD;&#xA;    &lt;appender name=&quot;LogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;&#xD;&#xA;      &lt;param name=&quot;File&quot; value=&quot;logs\\$LogFileName$.log&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;AppendToFile&quot; value=&quot;false&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;RollingStyle&quot; value=&quot;Size&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaxSizeRollBackups&quot; value=&quot;5&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;MaximumFileSize&quot; value=&quot;5000KB&quot; /&gt;&#xD;&#xA;      &lt;param name=&quot;StaticLogFileName&quot; value=&quot;true&quot; /&gt;&#xD;&#xA;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%date [%3thread] %-5level %-40logger{3} - %message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;&#xD;&#xA;      &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;&#xD;&#xA;        &lt;param name=&quot;ConversionPattern&quot; value=&quot;%message%newline&quot; /&gt;&#xD;&#xA;      &lt;/layout&gt;&#xD;&#xA;    &lt;/appender&gt;&#xD;&#xA;&#xD;&#xA;    &lt;root&gt;&#xD;&#xA;      &lt;priority value=&quot;DEBUG&quot; /&gt;&#xD;&#xA;      &lt;appender-ref ref=&quot;LogFileAppender&quot; /&gt;&#xD;&#xA;    &lt;/root&gt;&#xD;&#xA;  &lt;/log4net&gt;&#xD;&#xA;" reformat="False" shortenQualifiedReferences="False">
    <Context>
      <FileNameContext mask="*.config" />
    </Context>
    <Categories />
    <Variables>
      <Variable name="LogFileName" expression="getOutputName()" initialRange="0" />
    </Variables>
    <CustomProperties />
  </Template>
</TemplatesExport>
于 2010-09-10T08:04:28.747 回答
0

Machine.Specifications - 因为

作为一个重度 mspec 用户,我有几个专门用于 MSpec 的实时模板。这是一个快速设置因为并捕获错误的方法。

快捷方式: bece 适用
于:允许类型成员声明或命名空间声明的 C# 2.0+ 文件

bece - 因为(异常捕获)

Protected static Exception exception;
Because of = () => exception = Catch.Exception(() => $something$);
$END$

于 2011-04-04T16:47:24.720 回答
0

借鉴 Drew Noakes 的绝妙想法,这里是 Silverlight 的调用实现。

捷径:dca

适用于:C# 3.0 文件

if (!Dispatcher.CheckAccess())
{
    Dispatcher.BeginInvoke((Action)delegate { $METHOD_NAME$(sender, e); });
    return;
}

$END$

  • $METHOD_NAME$当前包含方法的不可编辑名称。
于 2010-08-27T21:54:37.807 回答
0

Rhino 模拟记录回放语法

快捷方式:RhinoMocksRecordPlaybackSyntax *

适用于: C# 2.0+ 文件

注意:此代码片段依赖于var mocks = new new MockRepository();已在其他地方声明和初始化的 MockRepository ()。

using (mocks.Record())
{
    $END$
}

using (mocks.Playback())
{

}

* 快捷方式名称可能看起来有点长,但输入时智能感知不是问题。Rhino Mocks 也有其他代码片段,因此完全限定名称可以更容易地在视觉上将它们组合在一起

于 2010-03-16T05:57:39.663 回答
0

Machine.Specifications - 它

捷径:

适用于:允许类型成员声明或命名空间声明的 C# 2.0+ 文件

Machine.Specifications.It $should_$ =
    () => 
    {

    };

宏属性(如果存在):

  • should_ - (无宏) - EditableOccurence
于 2011-07-06T10:50:21.250 回答
0

Rhino 模拟 Expect 方法

快捷方式:RhinoMocksExpectMethod

适用于: C# 2.0+ 文件

Expect.Call($EXPECT_CODE$).Return($RETURN_VALUE$);

快捷方式:RhinoMocksExpectVoidMethod

适用于: C# 2.0+ 文件

Expect.Call(delegate { $EXPECT_CODE$; });
于 2010-04-13T06:57:41.833 回答