您使用的是什么ReSharper 4 + C#生活模板?

C#使用什么ReSharper 4.0模板?

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


[标题]

可选说明

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

// Resharper template code snippet // comes here 

macros属性 (如果存在):

  • Macro1 – Value – EditableOccurence
  • Macro2 – Value – EditableOccurence

  • 每个答案一个macros,请!
  • 下面是一些NUnittesting夹具和独立NUnittesting用例的示例 ,它们以build议的格式描述了实时模板。

简单的Lambda

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

捷径 :x

可用 :C#expression式允许。

 x => x.$END$ 

macros:无。

实现'Dispose(bool)'方法

实现Joe Duffy的Dispose模式

快捷方式:处理

可用于:允许types成员声明的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; 

macros属性

  • MEMBER – build议variables的System.IDisposable – 可编辑的发生#1
  • CLASS – 包含的types名称

为某些types创build新的unit testing夹具

捷径: ntf
可用于:允许types成员声明或名称空间声明的C#2.0+文件

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

macros:

  • TypeToTest – 无 – #2
  • testing – 无 – V

检查一个string是否为空或空。

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

捷径 :sne

可用于 :允许expression式的C#2.0+。

 string.IsNullOrEmpty($VAR$) 

macros特性

  • VAR – build议一个stringtypes的variables。 Editible = true。

创build新的独立unit testing用例

捷径: ntc
可用于:允许types成员声明的C#2.0+文件

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

macros:

  • testing – 无 – V

为当前types声明一个log4netlogging器。

捷径:日志

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

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

macros属性

  • TYPE – 包含的types名称

MStestingunit testing

新的MStestingunit testing使用AAA语法和unit testing艺术中的命名约定

快捷方式:testing(或TST,或任何你想要的)
可用于:允许types成员声明的C#2.0+文件

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

macros属性 (如果存在):

  • MethodName – testing中的方法的名称
  • StateUnderTest – 你试图testing的状态
  • ExpectedBehavior – 你期待的事情发生

检查variables是否为空

捷径: ifn
可用于: C#2.0+文件

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

检查variables是否为空

捷径: ifnn
可用于: C#2.0+文件

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

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

(如果你已经厌倦了每一个构造函数的长时间input,那么它符合StyleCop规则SA1642)

捷径: csum

可用于: C#2.0+

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

macros:

  • classname – 包含types名称 – V

Assert.AreEqual

简单的模板添加断言到unit testing

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

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

stream利的版本:

 Assert.That($expected$, Is.EqualTo($actual$));$END$ 

很多Lambdas

使用不同的variables声明创build一个lambdaexpression式,以便于嵌套。

捷径: la,lb,lc

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

la被定义为:

 x => x.$END$ 

被定义为:

 y => y.$END$ 

lc被定义为:

 z => z.$END$ 

这和上面的Sean Kearon类似,只是我定义了多个lambda活模板,以便轻松嵌套lambdaexpression式。 “ la ”是最常用的,但是在处理这样的expression时,其他的则很有用:

 items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name))); 

等等…

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

捷径:暂停

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

 System.Console.WriteLine("Press <ENTER> to exit..."); System.Console.ReadLine();$END$ 

依赖属性生成

生成一个依赖项属性

捷径: 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$ 

macros属性(如果存在):

PropertyName – 没有macros – #3
PropertyType – 此时猜测types – #2
OwnerType – 包含types名称 – 不可编辑的发生

通知属性已更改

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

快捷方式 :npc

可用于 :允许expression式的C#2.0+。

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

macros

  • 成员 – 包含成员types名称。 不可编辑。 注意:确保这个名单是第一个。
  • LOWEREDMEMBER – 会员的价值与第一个字符在小写。 不可编辑。

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

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

它假定你的支持variables以“_”开始。 将其replace为您使用的任何内容。 它也假定你有一个像这样的属性改变方法:

 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事情的时候 ,也就是说。

快速ExpectedException快捷方式

只是一个快速添加到我的unit testing属性。

快捷方式 :ee

Available in :可用于:允许types成员声明的C#2.0+文件

 [ExpectedException(typeof($TYPE$))] 

AutoMapper属性映射

捷径: fm

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

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

macros:

  • 属性 – 可编辑的发生
  • src_property – 可编辑的发生

注意:

我离开lambda“点”,以便我可以打。 立即获得物业智慧。 需要AutoMapper( http://automapper.codeplex.com/ )。

为NUnit创buildtesting用例存根

这个可以作为unit testing运行器(与任何其他被忽略的testing)中出现的(实现或testingfunction的)提醒,

捷径: nts
可用于:允许types成员声明的C#2.0+文件

 [Test, Ignore] public void $TestName$() { throw new NotImplementedException(); } $END$ 

如果需要,调用

在开发WinForms应用程序的时候,一个方法应该可以从非UI线程调用,这个方法很有用,然后这个方法应该把调用调到UI线程上。

捷径 :inv

可用于 :C#3.0+文件语句是允许的

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

macros

  • METHOD_NAME – 包含types成员名称

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

 void DoSomething(Type1 arg1) { if (InvokeRequired) { Invoke((Action)delegate { DoSomething(arg1); }); return; } // Rest of method will only execute on the correct thread // ... } 

新的C#Guid

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

快捷键: csguid 可用于:在C#2.0+文件中

 new System.Guid("$GUID$") 

macros属性

  • GUID – 新的GUID – 错误

MSTesttesting方法

这有点跛脚,但是很有用。 希望有人会得到一些实用的东西。

捷径:testMethod

可用于:C#2.0

 [TestMethod] public void $TestName$() { throw new NotImplementedException(); //Arrange. //Act. //Assert. } $END$ 

NUnit设置方法

快捷方式:设置
Available in:可用于:允许types成员声明的C#2.0+文件

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

NUnit拆解方法

捷径:拆解
Available in:可用于:允许types成员声明的C#2.0+文件

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

创build完整性检查以确保参数永远不为空

捷径:
可用于:允许types语句的C#2.0+文件

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

macros:

  • 内部 – build议参数 – #1

备注: 虽然这个片段的目标是开源.NET Lokad.Shared库,但它可以很容易地适应任何其他types的参数检查。

新的COM类

快捷方式 :comclass

可用于 :允许types成员声明或名称空间声明的C#2.0+文件

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

macros

  • GUID – 新的GUID
  • NAME – 可编辑
  • 界面 – 可编辑

断言调用不是必需的

在开发WinForms应用程序时,如果要确保代码在给定项目的正确线程上执行,那么它非常有用。 请注意, Control实现了ISynchronizeInvoke

捷径 :ani

可用于 :C#2.0+文件语句是允许的

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

macros

  • SYNC_INVOKE – build议System.ComponentModel.ISynchronizeInvokevariables

Trace – Writeline,格式

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

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

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

macros属性:

  • 参数value – EditableOccurence
  • 蒙版"{0}" – EditableOccurence

新Typemock隔离器假货

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

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

macros属性:
* $ TYPE $ – 为新variablesbuild议types
* $ Name $ – 另一个variablesType )的值,小写的第一个字符

由于我现在正在与Unity合作,所以我想出了一些让我的生活更轻松的方法:


input别名

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

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

types声明

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

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

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

types声明(带名称)

这是一个名字没有参数的types

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

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

使用构造函数键入声明

这是一个名字没有参数的types

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

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

等等….

log4net XMLconfiguration块

您可以直接导入模板:

 <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> 

使方法虚拟

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

快捷方式: v

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

 virtual $END$ 

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

 public |string Name { get; set; }