您使用什么ReSharper 4+ C#的实时模板?

Rin*_*lin 94 c# resharper refactoring templates

你使用什么ReSharper 4.0 C#模板?

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


[标题]

可选说明

快捷方式:快捷方式适用
于: [可用性设置]

// Resharper template code snippet
// comes here
Run Code Online (Sandbox Code Playgroud)

宏属性(如果存在):

  • Macro1 - Value - EditableOccurence
  • Macro2 - Value - EditableOccurence

Sea*_*ron 30

简单的Lambda

如此简单,如此有用 - 一点点lambda:

捷径:x

可用:C#,其中允许表达式.

x => x.$END$
Run Code Online (Sandbox Code Playgroud)

宏:没有.


Ed *_*all 22

实现'Dispose(bool)'方法

实现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;
Run Code Online (Sandbox Code Playgroud)

宏属性:

  • 成员 - 建议System.IDisposable的变量 - 可编辑的出现#1
  • CLASS - 包含类型名称


Rin*_*lin 14

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

快捷方式: ntf
可用于: C#2.0+文件,其中允许使用类型成员声明或名称空间声明

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

宏:

  • TypeToTest - 无 - #2
  • 测试 - 无 - V


Sea*_*ron 13

检查字符串是空还是空.

如果你使用.Net 4,你可能更喜欢使用string.IsNullOrWhiteSpace().

捷径:偷偷摸摸

可用于:允许表达式的C#2.0+.

string.IsNullOrEmpty($VAR$)
Run Code Online (Sandbox Code Playgroud)

宏属性:

  • VAR - 建议一个类型为string的变量.Editible = true.


Rin*_*lin 11

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

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

[NUnit.Framework.TestAttribute]
public void $Test$()
{
    $END$
}
Run Code Online (Sandbox Code Playgroud)

宏:

  • 测试 - 无 - V


Chr*_*sma 10

为当前类型声明log4net记录器.

快捷方式:日志

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

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
Run Code Online (Sandbox Code Playgroud)

宏属性:

  • TYPE - 包含类型名称


Vac*_*ano 9

MS测试单元测试

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

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

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

    // Act


    // Assert

}
Run Code Online (Sandbox Code Playgroud)

宏属性(如果存在):

  • MethodName - 要测试的方法的名称
  • StateUnderTest - 您要测试的州
  • ExpectedBehavior - 你期望发生什么


Chr*_*ett 8

检查变量是否为空

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

if (null == $var$)
{
    $END$
}
Run Code Online (Sandbox Code Playgroud)

检查变量是否为空

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

if (null != $var$)
{
    $END$
}
Run Code Online (Sandbox Code Playgroud)

  • 从C++到C#的过渡如何对待你? (14认同)

Kje*_*sen 7

Assert.AreEqual

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

快捷方式:ae适用
:C#2.0+文件中允许使用语句

Assert.AreEqual($expected$, $actual$);$END$
Run Code Online (Sandbox Code Playgroud)

流利版本:

Assert.That($expected$, Is.EqualTo($actual$));$END$
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nov 7

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

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

捷径: csum

适用于: C#2.0+

Initializes a new instance of the <see cref="$classname$"/> class.$END$
Run Code Online (Sandbox Code Playgroud)

宏:

  • classname - 包含类型名称 - V.


Jam*_*acs 7

很多Lambdas

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

捷径: la,lb,lc

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

la定义为:

x => x.$END$
Run Code Online (Sandbox Code Playgroud)

lb定义为:

y => y.$END$
Run Code Online (Sandbox Code Playgroud)

lc定义为:

z => z.$END$
Run Code Online (Sandbox Code Playgroud)

这与上面的Sean Kearon相似,除了我定义了多个lambda live模板以便于lambdas的嵌套." la "是最常用的,但在处理像这样的表达式时,其他一些很有用:

items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));
Run Code Online (Sandbox Code Playgroud)


Jam*_*acs 6

等等......

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

捷径:暂停

可用于: C#2.0+文件,其中允许使用语句

System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$
Run Code Online (Sandbox Code Playgroud)


Jon*_* Aa 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$
Run Code Online (Sandbox Code Playgroud)

宏属性(如果存在):

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


wom*_*omp 5

Quick ExpectedException快捷方式

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

捷径:ee

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

[ExpectedException(typeof($TYPE$))]
Run Code Online (Sandbox Code Playgroud)


Sea*_*ron 5

通知属性已更改

这是我的最爱,因为我经常使用它,它为我做了很多工作.

捷径:npc

可用于:允许表达式的C#2.0+.

if (value != _$LOWEREDMEMBER$)
{
  _$LOWEREDMEMBER$ = value;
  NotifyPropertyChanged("$MEMBER$");
}
Run Code Online (Sandbox Code Playgroud)

:

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

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

private string _dateOfBirth;
public string DateOfBirth
{
   get { return _dateOfBirth; }
   set
   {
      npc<--tab from here
   }
}
Run Code Online (Sandbox Code Playgroud)

它假定您的支持变量以"_"开头.用你使用的任何东西替换它.它还假设您有一个属性更改方法,如下所示:

private void NotifyPropertyChanged(String info)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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

就在那时,我没有使用非常优雅和有用的PostSharp来完成整个INotifyPropertyChanged的事情.


Dav*_*ker 5

AutoMapper属性映射

捷径: fm

可用于: C#2.0+文件,其中允许使用语句

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

宏:

  • property - 可编辑的事件
  • src_property - 可编辑的事件

注意:

我把lambda"点"留下来让我可以击中.立即获得属性intellisense.需要AutoMapper(http://automapper.codeplex.com/).