Какие шаблоны ReSharper 4+ для С# вы используете? - программирование
Подтвердить что ты не робот

Какие шаблоны ReSharper 4+ для С# вы используете?

Какие шаблоны ReSharper 4.0 для С# вы используете?

Поделитесь ими в следующем формате:


[Title]

Дополнительное описание

Ярлык: ярлык
Доступно в: [AvailabilitySetting]

// Resharper template code snippet
// comes here

Свойства макросов (если есть):

  • Макро1 - Значение - Редактируемый Окуляр
  • Macro2 - значение - редактируемое управление

4b9b3361

Ответ 1

Простая Лямбда

Так просто, так полезно - немного лямбда:

Ярлык: x

Доступно: С#, где разрешено выражение.

x => x.$END$

Макросы: нет.

Ответ 2

Реализация 'Dispose (bool)' Метод

Внедрить 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;

Свойства макросов:

  • MEMBER. Предложите переменную System.IDisposable - Редактируемое Происхождение # 1
  • CLASS - Содержит имя типа

Ответ 3

Создайте новый элемент unit test для некоторого типа

Ярлык: ntf
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа или объявление пространства имен

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

Макросы:

  • TypeToTest - none - # 2
  • Тест - none - V

Ответ 4

Проверьте, является ли строка пустой или пустой.

Если вы используете .Net 4, вы можете использовать string.IsNullOrWhiteSpace().

Ярлык: sne

Доступно в: С# 2.0+, где разрешено выражение.

string.IsNullOrEmpty($VAR$)

Макро свойства:

  • VAR - предлагать переменную типа string. Правка = true.

Ответ 5

Создать новый автономный unit test case

Ярлык: ntc
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа

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

Макросы:

  • Тест - none - V

Ответ 6

Объявить логгер log4net для текущего типа.

Ярлык: журнал

Доступно в: файлах С# 2.0+, где разрешено объявление члена типа

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

Свойства макросов:

  • ТИП - Содержит имя типа

Ответ 7

Тест MS Unit Test

Новый тест MS Unit test с использованием синтаксиса AAA и соглашения об именах, найденного в Art of Unit Testing

Ярлык: тестирование (или tst, или все, что вы хотите)
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа

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

    // Act


    // Assert

}

Свойства макросов (если есть):

  • Имя метода - имя тестируемого метода
  • StateUnderTest. Состояние, которое вы пытаетесь проверить.
  • Ожидаемое поведение. Что вы ожидаете.

Ответ 8

Проверьте, не имеет ли значение null

Ярлык: ifn
Доступно в: файлах С# 2.0+

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

Проверьте, не является ли переменная не нулевой

Ярлык: ifnn
Доступно в: файлах С# 2.0+

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

Ответ 9

Assert.AreEqual

Простой шаблон для добавления утверждений в unit test

Ярлык: ae
Доступно в: в файлах С# 2.0+, где разрешена инструкция

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

Свободная версия:

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

Ответ 10

Создать Сводное соответствие, совместимое с StyleCop для конструктора классов

(если вам надоело постоянно печатать длинное стандартное резюме для каждого конструктора, чтобы оно соответствовало правилу StyleCop SA1642)

Ярлык: csum

Доступно в: С# 2.0 +

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

Макросы:

  • имя класса - Содержит имя типа - V

Ответ 11

Множество Lambdas

Создайте лямбда-выражение с другим объявлением переменной для легкого вложения.

Ярлык: 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)));

Ответ 12

Подождите...

Пауза для ввода пользователя перед концом консольного приложения.

Ярлык: пауза

Доступно в: файлах С# 2.0+, где разрешена инструкция

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

Ответ 13

Генерация свойств зависимостей

Создает свойство зависимости

Ярлык: 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 - Содержит имя типа - нет возможности для редактирования

Ответ 14

Быстрый ExpectedException Ярлык

Просто быстрый ярлык для добавления в мои атрибуты unit test.

Ярлык: ee

Доступно в: доступно в: С# 2.0+ файлах, где допускается объявление члена типа

[ExpectedException(typeof($TYPE$))]

Ответ 15

Уведомлять измененное свойство

Это мой любимый, потому что я часто его использую, и он много работает для меня.

Ярлык: npc

Доступно в: С# 2.0+, где разрешено выражение.

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

Макросы

  • 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));
   }
}

В действительности, версия этого я использую лямбдой ( "потому что я люблю свои лямбды!" ) и производит ниже. Принципы те же, что и выше.

public decimal CircuitConductorLive
{
   get { return _circuitConductorLive; }
   set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}

Что, когда я не использую чрезвычайно элегантную и полезную PostSharp, чтобы сделать всю вещь INotifyPropertyChanged без усилий, то есть.

Ответ 16

Отображение свойств AutoMapper

Ярлык: fm

Доступно в: файлах С# 2.0+, где разрешена инструкция

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

Макросы:

  • свойство - редактируемое событие
  • src_property - редактируемое появление

Примечание:

Я оставляю лямбда "точку", чтобы я мог ударить. немедленно и получить свойство intellisense. Требуется AutoMapper (http://automapper.codeplex.com/).

Ответ 17

Создать тестовый патч для NUnit

Это может служить напоминанием (о функциональности для реализации или тестирования), которое отображается в бегунке unit test (как и любой другой проигнорированный тест),

Ярлык: nts
Доступно в: файлах С# 2.0+, где разрешено объявление члена типа

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

Ответ 18

Вызывать, если требуется

Полезно при разработке приложений WinForms, где метод должен быть вызван из потоков, отличных от UI, и этот метод должен затем маршировать вызов в поток пользовательского интерфейса.

Ярлык: inv

Доступно в: разрешена инструкция файлов С# 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
    // ...
}

Ответ 19

Метод тестирования MSTest

Это немного хромает, но это полезно. Надеюсь, кто-то получит какую-то полезность.

Ярлык: testMethod

Доступно в: С# 2.0

[TestMethod]
public void $TestName$()
{
    throw new NotImplementedException();

    //Arrange.

    //Act.

    //Assert.
}

$END$

Ответ 20

Метод NUnit Setup

Ярлык: настройка
Доступно в: Доступно в: С# 2.0+ файлах, где разрешено объявление члена типа

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

Ответ 21

Метод NUnit Teardown

Ярлык: срыв

Доступно в: Доступно в: С# 2.0+ файлах, где разрешено объявление члена типа

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

Ответ 22

Новый С# Guid

Создает новый экземпляр System.Guid, инициализированный новым генерируемым значением guid

Ярлык: csguid Доступно в: в файлах С# 2.0+

new System.Guid("$GUID$")

Свойства макросов:

  • GUID - Новый GUID - False

Ответ 23

Создайте проверку работоспособности, чтобы гарантировать, что аргумент никогда не имеет значения null

Ярлык: eann
Доступно в: С# 2.0+ файлах, где допускается инструкция типа

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

Макросы:

  • внутренний - параметр предложения - # 1

Примечания: Хотя этот фрагмент предназначен для открытой библиотеки .NET Lokad.Shared, он может быть легко адаптирован к проверке любого другого типа.

Ответ 24

Новый COM-класс

Ярлык: comclass

Доступно в: файлы С# 2.0+, где разрешено объявление члена типа или объявление пространства имен

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

Макросы

  • GUID - новый GUID
  • ИМЯ - Редактируемый
  • ИНТЕРФЕЙС - Редактируемый

Ответ 25

Активировать вызов не требуется

Полезно при разработке приложений WinForms, где вы хотите быть уверенным, что код выполняется в правильном потоке для данного элемента. Обратите внимание, что Control реализует ISynchronizeInvoke.

Ярлык: ani

Доступно в: разрешено использование файлов файлов С# 2.0+

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

Макросы

  • SYNC_INVOKE - укажите переменную System.ComponentModel.ISynchronizeInvoke

Ответ 26

Trace - Writeline, с форматом

Очень простой шаблон для добавления трассировки с форматированной строкой (например, Debug.WriteLine уже поддерживает).

Ярлык: twlf
Доступно в: файлах С# 2.0+, где разрешена инструкция

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

Свойства макросов:

  • Аргумент - value - EditableOccurence
  • Маска - "{0}" - EditableOccurence

Ответ 27

Новый поддельный изолятор Typemock

Ярлык: поддельный
Доступно в: [в файлах С# 2.0, где оператор разрешен]

$TYPE $$ Имя $Fake = Isolate.Fake.Instance();
Isolate.WhenCalled(() = > $Name $Fake.)

Свойства макросов:
  * $TYPE $- тип предложения для новой переменной
  * $Имя $- Значение другой переменной (Тип) с первым символом в нижнем регистре

Ответ 28

Поскольку я сейчас работаю с 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>

и т.д....

Ответ 29

блок конфигурации XML log4net

Вы можете напрямую импортировать шаблон:

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

Ответ 30

Сделать метод Виртуальный

Добавляет виртуальное ключевое слово. Особенно полезно при использовании NHibernate, EF или аналогичной структуры, где методы и/или свойства должны быть виртуальными, чтобы обеспечить ленивую загрузку или проксирование.

Ярлык: v

Доступно в: файле С# 2.0+, где разрешено объявление члена типа

virtual $END$

Трюк здесь - это пространство после виртуального, что может быть трудно увидеть выше. Фактический шаблон - "виртуальный $END $" с включенным кодом форматирования. Это позволяет перейти к точке вставки ниже (обозначается символом |) и ввести v:

public |string Name { get; set; }