您使用的是什么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.ISynchronizeInvoke
variables
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 $ – 另一个variables ( Type )的值,小写的第一个字符
由于我现在正在与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=" <configSections>
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
 </configSections>

 <log4net debug="false">
 <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
 <param name="File" value="logs\\$LogFileName$.log" />
 <param name="AppendToFile" value="false" />
 <param name="RollingStyle" value="Size" />
 <param name="MaxSizeRollBackups" value="5" />
 <param name="MaximumFileSize" value="5000KB" />
 <param name="StaticLogFileName" value="true" />

 <layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%date [%3thread] %-5level %-40logger{3} - %message%newline" />
 </layout>
 </appender>

 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 <layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%message%newline" />
 </layout>
 </appender>

 <root>
 <priority value="DEBUG" />
 <appender-ref ref="LogFileAppender" />
 </root>
 </log4net>
" 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; }