Ответ 1
Простая Лямбда
Так просто, так полезно - немного лямбда:
Ярлык: x
Доступно: С#, где разрешено выражение.
x => x.$END$
Макросы: нет.
Какие шаблоны ReSharper 4.0 для С# вы используете?
Поделитесь ими в следующем формате:
Дополнительное описание
Ярлык: ярлык
Доступно в: [AvailabilitySetting]
// Resharper template code snippet
// comes here
Свойства макросов (если есть):
Так просто, так полезно - немного лямбда:
Ярлык: x
Доступно: С#, где разрешено выражение.
x => x.$END$
Макросы: нет.
Внедрить Joe Duffy Dispose Pattern
Ярлык: удалите
Доступно в: файлах С# 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;
Свойства макросов:
Ярлык: ntf
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа или объявление пространства имен
[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
[NUnit.Framework.TestAttribute]
public void $Test$()
{
var t = new $TypeToTest$()
$END$
}
}
Макросы:
Если вы используете .Net 4, вы можете использовать string.IsNullOrWhiteSpace().
Ярлык: sne
Доступно в: С# 2.0+, где разрешено выражение.
string.IsNullOrEmpty($VAR$)
Макро свойства:
Ярлык: ntc
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа
[NUnit.Framework.TestAttribute]
public void $Test$()
{
$END$
}
Макросы:
Объявить логгер log4net для текущего типа.
Ярлык: журнал
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
Свойства макросов:
Новый тест MS Unit test с использованием синтаксиса AAA и соглашения об именах, найденного в Art of Unit Testing
Ярлык: тестирование (или tst, или все, что вы хотите)
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа
[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
// Arrange
$END$
// Act
// Assert
}
Свойства макросов (если есть):
Ярлык: ifn
Доступно в: файлах С# 2.0+
if (null == $var$)
{
$END$
}
Ярлык: ifnn
Доступно в: файлах С# 2.0+
if (null != $var$)
{
$END$
}
Assert.AreEqual
Простой шаблон для добавления утверждений в unit test
Ярлык: ae
Доступно в: в файлах С# 2.0+, где разрешена инструкция
Assert.AreEqual($expected$, $actual$);$END$
Свободная версия:
Assert.That($expected$, Is.EqualTo($actual$));$END$
(если вам надоело постоянно печатать длинное стандартное резюме для каждого конструктора, чтобы оно соответствовало правилу StyleCop SA1642)
Ярлык: csum
Доступно в: С# 2.0 +
Initializes a new instance of the <see cref="$classname$"/> class.$END$
Макросы:
Создайте лямбда-выражение с другим объявлением переменной для легкого вложения.
Ярлык: la, lb, lc
Доступно в: файлах С# 3.0+, где разрешено выражение или предложение запроса
la определяется как:
x => x.$END$
lb определяется как:
y => y.$END$
lc определяется как:
z => z.$END$
Это похоже на Sean Kearon выше, за исключением того, что я определяю несколько лямбда-живых шаблонов для удобной вложенности лямбда. "la" чаще всего используется, но другие полезны при рассмотрении выражений типа:
items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));
Пауза для ввода пользователя перед концом консольного приложения.
Ярлык: пауза
Доступно в: файлах С# 2.0+, где разрешена инструкция
System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$
Генерация свойств зависимостей
Создает свойство зависимости
Ярлык: dp
Доступно в: С# 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 - Содержит имя типа - нет возможности для редактирования
Просто быстрый ярлык для добавления в мои атрибуты unit test.
Ярлык: ee
Доступно в: доступно в: С# 2.0+ файлах, где допускается объявление члена типа
[ExpectedException(typeof($TYPE$))]
Это мой любимый, потому что я часто его использую, и он много работает для меня.
Ярлык: npc
Доступно в: С# 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));
}
}
В действительности, версия этого я использую лямбдой ( "потому что я люблю свои лямбды!" ) и производит ниже. Принципы те же, что и выше.
public decimal CircuitConductorLive
{
get { return _circuitConductorLive; }
set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}
Что, когда я не использую чрезвычайно элегантную и полезную PostSharp, чтобы сделать всю вещь INotifyPropertyChanged без усилий, то есть.
Ярлык: fm
Доступно в: файлах С# 2.0+, где разрешена инструкция
.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$
Макросы:
Примечание:
Я оставляю лямбда "точку", чтобы я мог ударить. немедленно и получить свойство intellisense. Требуется AutoMapper (http://automapper.codeplex.com/).
Это может служить напоминанием (о функциональности для реализации или тестирования), которое отображается в бегунке unit test (как и любой другой проигнорированный тест),
Ярлык: nts
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа
[Test, Ignore]
public void $TestName$()
{
throw new NotImplementedException();
}
$END$
Полезно при разработке приложений WinForms, где метод должен быть вызван из потоков, отличных от UI, и этот метод должен затем маршировать вызов в поток пользовательского интерфейса.
Ярлык: inv
Доступно в: разрешена инструкция файлов С# 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
// ...
}
Это немного хромает, но это полезно. Надеюсь, кто-то получит какую-то полезность.
Ярлык: testMethod
Доступно в: С# 2.0
[TestMethod]
public void $TestName$()
{
throw new NotImplementedException();
//Arrange.
//Act.
//Assert.
}
$END$
Ярлык: настройка
Доступно в: Доступно в: С# 2.0+ файлах, где разрешено объявление члена типа
[NUnit.Framework.SetUp]
public void SetUp()
{
$END$
}
Ярлык: срыв
Доступно в: Доступно в: С# 2.0+ файлах, где разрешено объявление члена типа
[NUnit.Framework.TearDown]
public void TearDown()
{
$END$
}
Создает новый экземпляр System.Guid, инициализированный новым генерируемым значением guid
Ярлык: csguid Доступно в: в файлах С# 2.0+
new System.Guid("$GUID$")
Свойства макросов:
Ярлык: eann
Доступно в: С# 2.0+ файлах, где допускается инструкция типа
Enforce.ArgumentNotNull($inner$, "$inner$");
Макросы:
Примечания: Хотя этот фрагмент предназначен для открытой библиотеки .NET Lokad.Shared, он может быть легко адаптирован к проверке любого другого типа.
Ярлык: comclass
Доступно в: файлы С# 2.0+, где разрешено объявление члена типа или объявление пространства имен
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
$END$
}
Макросы
Полезно при разработке приложений WinForms, где вы хотите быть уверенным, что код выполняется в правильном потоке для данного элемента. Обратите внимание, что Control
реализует ISynchronizeInvoke
.
Ярлык: ani
Доступно в: разрешено использование файлов файлов С# 2.0+
Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");
Макросы
System.ComponentModel.ISynchronizeInvoke
Очень простой шаблон для добавления трассировки с форматированной строкой (например, Debug.WriteLine уже поддерживает).
Ярлык: twlf
Доступно в: файлах С# 2.0+, где разрешена инструкция
Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));
Свойства макросов:
value
- EditableOccurence"{0}"
- EditableOccurence Ярлык: поддельный
Доступно в: [в файлах С# 2.0, где оператор разрешен]
$TYPE $$ Имя $Fake = Isolate.Fake.Instance();
Isolate.WhenCalled(() = > $Name $Fake.)
Свойства макросов:
* $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>
и т.д....
блок конфигурации XML log4net
Вы можете напрямую импортировать шаблон:
<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
Доступно в: файле С# 2.0+, где разрешено объявление члена типа
virtual $END$
Трюк здесь - это пространство после виртуального, что может быть трудно увидеть выше. Фактический шаблон - "виртуальный $END $" с включенным кодом форматирования. Это позволяет перейти к точке вставки ниже (обозначается символом |) и ввести v:
public |string Name { get; set; }