您使用哪些适用于 C# 的 ReSharper 4+ 实时模板
本文关键字:ReSharper 实时 适用于 | 更新日期: 2023-09-27 17:47:22
您使用哪些用于 C# 的 ReSharper 4.0 模板?
让我们以以下格式分享这些内容:
[标题]
可选说明
快捷方式:快捷方式
可用: [可用性设置]
// Resharper template code snippet
// comes here
宏属性(如果存在):
- 宏 1 - 值 - 可编辑发生
- 宏 2 - 值 - 可编辑发生
- 请为每个答案提供一个宏! 下面是 NUnit 测试
- 夹具和独立 NUnit 测试用例的一些示例,它们以建议的格式描述实时模板。
Simple Lambda
如此简单,如此有用 - 一点点 lambda:
快捷键: x
可用:允许表达式的 C#。
x => x.$END$
宏:无。
实现 'Dispose(bool)' 方法
实现 Joe Duffy 的处置模式
快捷方式:处置
可用:允许类型成员声明的 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;
宏属性:
- 成员 - 建议系统变量.ID是可编辑的 - 可编辑的发生 #1
- 类 - 包含类型名称
为某种类型创建新的单元测试夹具
快捷键:NTF
提供:允许类型成员声明或命名空间声明的 C# 2.0+ 文件
[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
[NUnit.Framework.TestAttribute]
public void $Test$()
{
var t = new $TypeToTest$()
$END$
}
}
宏:
- 类型到测试 - 无 - #2
- 测试 - 无 - V
检查字符串是空还是空。
如果您使用的是 .Net 4,您可能更喜欢使用字符串。IsNullOrWhiteSpace().
快捷键:sne
在以下版本中可用:允许表达式的 C# 2.0+。
string.IsNullOrEmpty($VAR$)
宏属性:
- VAR - 建议字符串类型的变量。可编辑 = 真。
创建新的独立单元测试用例
快捷键:NTC
提供:允许类型成员声明的 C# 2.0+ 文件
[NUnit.Framework.TestAttribute]
public void $Test$()
{
$END$
}
宏:
- 测试 - 无 - V
为当前类型声明一个 log4net 记录器。
快捷方式:日志
可用:允许类型成员声明的 C# 2.0+ 文件
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
宏属性:
- 类型
- - 包含类型名称
MS 测试单元测试
新的 MS 测试单元测试使用 AAA 语法和单元测试艺术中的命名约定
快捷方式:测试(或tst,或任何你想要的)
提供:允许类型成员声明的 C# 2.0+ 文件
[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
// Arrange
$END$
// Act
// Assert
}
宏属性(如果存在):
- 方法名称 - 受测方法的名称
- 状态测试下 - 您尝试测试的状态
- 预期行为 - 预期发生的情况
检查变量是否为空
快捷键:ifn
提供:C# 2.0+ 文件
if (null == $var$)
{
$END$
}
检查变量是否不为空
快捷方式:ifnn
提供:C# 2.0+ 文件
if (null != $var$)
{
$END$
}
为类构造函数编写符合 StyleCop 的摘要
(如果您厌倦了为每个构造函数不断键入长标准摘要,因此它符合 StyleCop 规则 SA1642)
快捷方式:csum
可用版本:C# 2.0+
Initializes a new instance of the <see cref="$classname$"/> class.$END$
宏:
- 类名 - 包含类型名 - V
Assert.AreEqual
用于向单元测试添加断言的简单模板
快捷键:ae
可用于:在允许语句的 C# 2.0+ 文件中
Assert.AreEqual($expected$, $actual$);$END$
流利版本:
Assert.That($expected$, Is.EqualTo($actual$));$END$
很多 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)));
等待它...
在控制台应用程序结束之前暂停用户输入。
快捷方式:暂停
可用:允许语句的 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$
宏属性(如果存在):
属性名称 - 无宏 - #3
属性类型 - 此时预期的猜测类型 - #2
所有者类型 - 包含类型名称 - 没有可编辑的匹配项
通知属性已更改
这是我最喜欢的,因为我经常使用它,它为我做了很多工作。
快捷方式:NPC
在以下版本中可用:允许表达式的 C# 2.0+。
if (value != _$LOWEREDMEMBER$)
{
_$LOWEREDMEMBER$ = value;
NotifyPropertyChanged("$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的('cos I loves my lambdas!)并产生以下内容。 原则与上述相同。
public decimal CircuitConductorLive
{
get { return _circuitConductorLive; }
set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}
那时我不会使用非常优雅和有用的PostSharp来不费吹灰之力地完成整个INotifyPropertyChanged的事情。
快速预期异常快捷方式
只是添加到我的单元测试属性的快速快捷方式。
快捷方式:ee
可用:可用:允许类型成员声明的 C# 2.0+ 文件
[ExpectedException(typeof($TYPE$))]
自动映射器属性映射
快捷键:调频
可用:允许语句的 C# 2.0+ 文件
.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$
Macros:
- property - editable occurrence
- src_property - editable occurrence
Note:
I leave the lambda "dot" off so that I can hit . immediately and get property intellisense. Requires AutoMapper (http://automapper.codeplex.com/).
Create test case stub for NUnit
This one could serve as a reminder (of functionality to implement or test) that shows up in the unit test runner (as any other ignored test),
Shortcut: nts
Available in: C# 2.0+ files where type member declaration is allowed
[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;
}
宏
- METHOD_NAME - 包含类型成员名称
您通常使用此模板作为给定方法中的第一个语句,结果类似于:
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 实例
快捷键:CSGUID可用:在 C# 2.0+ 文件中
new System.Guid("$GUID$")
宏属性:
- GUID - 新图形用户界面 - 假
MSTest Test Method
这有点蹩脚,但它很有用。 希望有人能从中获得一些效用。
快捷方式:测试方法
可用版本:C# 2.0
[TestMethod]
public void $TestName$()
{
throw new NotImplementedException();
//Arrange.
//Act.
//Assert.
}
$END$
NUnit Setup 方法
快捷方式:设置
提供:可用:允许类型成员声明的 C# 2.0+ 文件
[NUnit.Framework.SetUp]
public void SetUp()
{
$END$
}
NUnit 拆解法
快捷方式:拆解
提供:可用:允许类型成员声明的 C# 2.0+ 文件
[NUnit.Framework.TearDown]
public void TearDown()
{
$END$
}
创建健全性检查以确保参数永远不会为空
快捷键:伊恩
提供:允许类型语句的 C# 2.0+ 文件
Enforce.ArgumentNotNull($inner$, "$inner$");
宏:
- 内部 - 建议参数 - #1
言论:尽管此代码段面向开源 .NET Lokad.Shared 库,但它可以很容易地适应任何其他类型的参数检查。
New COM class
快捷键:共类
在以下版本中可用:允许类型成员声明或命名空间声明的 C# 2.0+ 文件
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
$END$
}
宏
- GUID - 新图形用户界面
- 名称 - 可编辑
- 界面 - 可编辑
言调用
在开发 WinForms 应用程序时很有用,您希望确保代码在给定项的正确线程上执行。 请注意,Control
实现ISynchronizeInvoke
。
快捷键:阿尼
可用:允许 C# 2.0+ 文件语句
Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");
宏
- SYNC_INVOKE - 建议
System.ComponentModel.ISynchronizeInvoke
变量
跟踪 - 写行,带格式
非常简单的模板,用于添加带有格式化字符串的跟踪(如Debug.WriteLine已经支持)。
快捷键:twlf
提供:允许语句的 C# 2.0+ 文件
Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));
宏属性:
- 参数 -
value
- 可编辑发生 - 蒙版 -
"{0}"
- 可编辑发生
新类型模拟隔离器 假
快捷方式:假
的在以下版本中可用:[在允许语句的 C# 2.0 文件中]
$TYPE$ $Name$Fake = Isolate.Fake.Instance();
Isolate.WhenCalled(() => $Name$Fake.)
宏属性:
* $TYPE$ - 建议新变量
的类型 * $Name$ - 第一个字符为小写的另一个变量(Type)的值
由于我现在正在使用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>
等。。。。
log4net XML Configuration Block
您可以直接导入模板:
<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
可用:允许类型成员声明的 C# 2.0+ 文件
virtual $END$
这里的诀窍是虚拟之后的空间,这可能很难在上面看到。实际模板是启用了重新格式化代码的"虚拟$END$"。这允许您转到下面的插入点(用 |表示)并键入 v:
public |string Name { get; set; }