您使用 C#的ReSharper 4.0模板?
让我们用以下格式分享这些:
可选说明
快捷方式:快捷方式
适用于: [可用性设置]
// Resharper template code snippet
// comes here
宏属性(如果存在):
答案 0 :(得分:30)
如此简单,如此有用 - 一点点lambda:
快捷方式:x
可用:C#,其中允许表达式。
x => x.$END$
宏:无。
答案 1 :(得分:22)
快捷方式:处置
适用于:允许使用类型成员声明的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;
宏属性:
答案 2 :(得分:14)
捷径: ntf
可用于: C#2.0+文件,其中允许使用类型成员声明或名称空间声明
[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
[NUnit.Framework.TestAttribute]
public void $Test$()
{
var t = new $TypeToTest$()
$END$
}
}
<强>宏:强>
答案 3 :(得分:13)
如果你使用的是.Net 4,你可能更喜欢使用string.IsNullOrWhiteSpace()。
快捷方式:sne
可在中使用:C#2.0+,其中允许表达式。
string.IsNullOrEmpty($VAR$)
宏属性:
答案 4 :(得分:11)
捷径: ntc
适用于:允许使用类型成员声明的C#2.0+文件
[NUnit.Framework.TestAttribute]
public void $Test$()
{
$END$
}
<强>宏:强>
答案 5 :(得分:10)
为当前类型声明log4net记录器。
快捷方式:日志
适用于:允许使用类型成员声明的C#2.0+文件
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
宏属性:
答案 6 :(得分:9)
使用AAA语法和Art Of Unit Testing
中的命名约定进行新的MS测试单元测试 快捷方式:测试(或tst,或任何你想要的)
适用于:允许使用类型成员声明的C#2.0+文件
[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
// Arrange
$END$
// Act
// Assert
}
宏属性(如果存在):
答案 7 :(得分:8)
快捷方式: ifn
适用于: C#2.0+文件
if (null == $var$)
{
$END$
}
快捷方式: ifnn
适用于: C#2.0+文件
if (null != $var$)
{
$END$
}
答案 8 :(得分:7)
(如果您厌倦了为每个构造函数不断输入长标准摘要,那么它符合StyleCop规则SA1642)
快捷方式: csum
适用于: C#2.0 +
Initializes a new instance of the <see cref="$classname$"/> class.$END$
<强>宏:强>
答案 9 :(得分:7)
<强> Assert.AreEqual 强>
将断言添加到单元测试的简单模板
快捷方式:ae
在中可用:在C#2.0+文件中允许使用语句
Assert.AreEqual($expected$, $actual$);$END$
流利版:
Assert.That($expected$, Is.EqualTo($actual$));$END$
答案 10 :(得分:7)
使用不同的变量声明创建一个lambda表达式,以便于嵌套。
快捷方式: la,lb,lc
适用于:允许使用表达式或查询子句的C#3.0+文件
la 定义为:
x => x.$END$
lb 定义为:
y => y.$END$
lc 定义为:
z => z.$END$
这与上面的Sean Kearon类似,不同之处在于我定义了多个lambda live模板以便于lambdas的嵌套。 “ la ”是最常用的,但其他一些在处理这样的表达式时很有用:
items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));
答案 11 :(得分:6)
在控制台应用程序结束前暂停用户输入。
快捷方式:暂停
适用于: C#2.0+文件允许使用语句
System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$
答案 12 :(得分: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 - 包含类型名称 - 无可编辑的出现
答案 13 :(得分:5)
这是我的最爱,因为我经常使用它,它为我做了很多工作。
快捷方式:npc
可在中使用:C#2.0+,其中允许表达式。
if (value != _$LOWEREDMEMBER$)
{
_$LOWEREDMEMBER$ = value;
NotifyPropertyChanged("$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 to do the whole INotifyPropertyChanged thing for no effort时,就是这样。
答案 14 :(得分:5)
快捷方式: fm
适用于: C#2.0+文件允许使用语句
.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$
<强>宏:强>
注意:
我将lambda“dot”关闭,以便我可以击中。立即获得属性intellisense。 需要AutoMapper(http://automapper.codeplex.com/)。
答案 15 :(得分:5)
只是添加到我的单元测试属性的快捷方式。
快捷方式:ee
可在中使用:适用于:允许使用类型成员声明的C#2.0+文件
[ExpectedException(typeof($TYPE$))]
答案 16 :(得分:4)
捷径:拆解
适用于:适用于:允许使用类型成员声明的C#2.0+文件
[NUnit.Framework.TearDown]
public void TearDown()
{
$END$
}
答案 17 :(得分:4)
快捷方式:设置
适用于:适用于:允许使用类型成员声明的C#2.0+文件
[NUnit.Framework.SetUp]
public void SetUp()
{
$END$
}
答案 18 :(得分:4)
这有点蹩脚,但它很有用。希望有人能从中得到一些实用工具。
快捷方式:testMethod
适用于:C#2.0
[TestMethod]
public void $TestName$()
{
throw new NotImplementedException();
//Arrange.
//Act.
//Assert.
}
$END$
答案 19 :(得分:4)
在开发WinForms应用程序时很有用,其中一个方法应该可以从非UI线程调用,然后该方法应该将调用编组到UI线程上。
快捷方式:inv
可在中使用:允许使用C#3.0+文件语句
if (InvokeRequired)
{
Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
return;
}
<强>宏强>
您通常会将此模板用作给定方法中的第一个语句,结果类似于:
void DoSomething(Type1 arg1)
{
if (InvokeRequired)
{
Invoke((Action)delegate { DoSomething(arg1); });
return;
}
// Rest of method will only execute on the correct thread
// ...
}
答案 20 :(得分:4)
生成一个新的System.Guid实例,初始化为新生成的guid值
快捷方式: csguid 在C#2.0+文件中提供
new System.Guid("$GUID$")
宏属性:
答案 21 :(得分:4)
这个可以作为提示(实现或测试的功能),显示在单元测试运行器中(与任何其他被忽略的测试一样),
捷径: nts
适用于:允许使用类型成员声明的C#2.0+文件
[Test, Ignore]
public void $TestName$()
{
throw new NotImplementedException();
}
$END$
答案 22 :(得分:3)
在开发WinForms应用程序时很有用,在这些应用程序中,您希望确保代码在给定项目的正确线程上执行。请注意Control
实现了ISynchronizeInvoke
。
快捷方式:ani
可在中使用:允许使用C#2.0+文件语句
Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");
<强>宏强>
System.ComponentModel.ISynchronizeInvoke
答案 23 :(得分:3)
快捷方式:comclass
可在中使用:C#2.0+文件,其中允许使用类型成员声明或名称空间声明
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
$END$
}
<强>宏强>
答案 24 :(得分:3)
捷径: eann
适用于:允许使用type语句的C#2.0+文件
Enforce.ArgumentNotNull($inner$, "$inner$");
<强>宏:强>
<强>说明:强> 虽然此代码段针对开源.NET Lokad.Shared库,但它可以很容易地适应任何其他类型的参数检查。
答案 25 :(得分:2)
使用格式化字符串添加跟踪的非常简单的模板(如Debug.WriteLine支持)。
快捷方式: twlf
适用于:允许声明的C#2.0+文件
Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));
宏属性:
value
- EditableOccurence "{0}"
- EditableOccurence 答案 26 :(得分:1)
添加虚拟关键字。在使用NHibernate,EF或类似框架时特别有用,其中方法和/或属性必须是虚拟的,以启用延迟加载或代理。
快捷方式: v
适用于: C#2.0+文件,其中允许使用类型成员声明
virtual $END$
这里的诀窍是虚拟之后的空间,这可能很难在上面看到。实际模板为“virtual $ END $”,启用了重新格式化代码。这允许您转到下面的插入点(用|表示)并键入v:
public |string Name { get; set; }
答案 27 :(得分:1)
一般的.NET和默认的“equals”模板都不会让一个好的,简单的Equals方法变得容易。虽然there are many thoughts关于如何编写好的Equals方法,但我认为以下内容足以满足90%的简单案例。对于任何更复杂的事情 - 特别是在继承方面 - 可能会更好to not use Equals at all。
快捷方式:等于
适用于: 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;
}
宏属性:
答案 28 :(得分:1)
log4net XML配置块
您可以直接导入模板:
<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>
答案 29 :(得分: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>
等...
答案 30 :(得分:1)
快捷方式:假的 可在中使用:[在允许声明的c#2.0文件中]
$ TYPE $ $ Name $ Fake = Isolate.Fake.Instance();
Isolate.WhenCalled(()=&gt; $ Name $ Fake。)
宏属性:
* $ TYPE $ - 新变量的建议类型
* $ Name $ - 另一个变量的值( Type ),第一个字符为小写
答案 31 :(得分:0)
借鉴Drew Noakes的优点,这里是Silverlight调用的实现。
快捷方式:dca
适用于:C#3.0文件
if (!Dispatcher.CheckAccess())
{
Dispatcher.BeginInvoke((Action)delegate { $METHOD_NAME$(sender, e); });
return;
}
$END$
<强>宏强>
$METHOD_NAME$
当前包含方法的不可编辑名称。答案 32 :(得分:0)
作为一个沉重的mspec用户,我有几个专门用于MSpec的实时模板。这是一个快速的设置因为并捕获错误。
捷径: bece
可用于: C#2.0+文件,其中允许使用类型成员声明或名称空间声明
bece - 因为(有例外捕获)
Protected static Exception exception;
Because of = () => exception = Catch.Exception(() => $something$);
$END$
答案 33 :(得分:0)
快捷方式:RhinoMocksExpectMethod
适用于: C#2.0+文件
Expect.Call($EXPECT_CODE$).Return($RETURN_VALUE$);
快捷方式:RhinoMocksExpectVoidMethod
适用于: C#2.0+文件
Expect.Call(delegate { $EXPECT_CODE$; });
答案 34 :(得分:0)
快捷方式:RhinoMocksRecordPlaybackSyntax *
适用于: C#2.0+文件
注意:此代码段依赖于已在其他位置声明和初始化的MockRepository(var mocks = new new MockRepository();
)。
using (mocks.Record())
{
$END$
}
using (mocks.Playback())
{
}
*对于快捷方式名称可能看起来有点长,但在输入时intellisense不是问题。还有其他Rhino Mocks的代码片段,因此完全限定名称可以更容易地将它们组合在一起
答案 35 :(得分:0)
快捷方式:它
适用于: C#2.0+文件,其中允许使用类型成员声明或名称空间声明
Machine.Specifications.It $should_$ =
() =>
{
};
宏属性(如果存在):