어떤 C # 용 ReSharper 4+ 라이브 템플릿을 사용하십니까? [닫은]


94

어떤 C # 용 ReSharper 4.0 템플릿을 사용하십니까?

다음 형식으로 공유해 보겠습니다.


[표제]

선택적 설명

바로 가기 : 바로 가기
사용 가능한 위치 : [AvailabilitySetting]

// Resharper template code snippet
// comes here

매크로 속성 (있는 경우) :

  • Macro1--EditableOccurence
  • Macro2--EditableOccurence


주관적이기 때문에 대신 programmers.SE 에 있어야합니까 ?
Timwi 2011

이 질문은 건설적이지 않으며 resharper 라이브 템플릿 및 Visual Studio 템플릿에 대한 많은 정보가 있습니다. programmingsolved.blogspot.com/2014/04/snippet-away.html
라니 Chivandikwa에게

답변:


31

간단한 람다

매우 간단하고 유용합니다-약간의 람다 :

바로 가기 : x

사용 가능 :식이 허용되는 C #입니다.

x => x.$END$

매크로 : 없음.


22

'Dispose (bool)'메서드 구현

Joe Duffy의 Dispose 패턴 구현

바로 가기 : 폐기

사용 가능 : 유형 멤버 선언이 허용되는 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;

매크로 속성 :

  • MEMBER -System.IDisposable의 변수 제안-편집 가능한 발생 # 1
  • CLASS- 포함 유형 이름

14

일부 유형에 대한 새 단위 테스트 픽스처 생성

바로 가기 : ntf
사용 가능 : 형식 멤버 선언 또는 네임 스페이스 선언이 허용되는 C # 2.0+ 파일

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

매크로 :

  • TypeToTest- 없음-# 2
  • 테스트 -없음-V

13

문자열이 null인지 비어 있는지 확인합니다.

.Net 4를 사용하는 경우 string.IsNullOrWhiteSpace ()를 사용하는 것이 좋습니다.

바로 가기 : sne

사용 가능 :식이 허용되는 C # 2.0+.

string.IsNullOrEmpty($VAR$)

매크로 속성 :

  • VAR-문자열 유형의 변수를 제안합니다. 편집 가능 = 사실.

11

새로운 독립형 단위 테스트 케이스 만들기

바로 가기 : ntc
사용 가능 : 형식 멤버 선언이 허용되는 C # 2.0+ 파일

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

매크로 :

  • 테스트 -없음-V

10

현재 유형에 대한 log4net 로거를 선언하십시오.

바로 가기 : 로그

사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

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

매크로 속성 :

  • TYPE - 유형 이름을 포함하는

다시 샤퍼로 이것을 사용하지 않겠습니까? 개인 정적 읽기 전용 ILog _Logger = LogManager.GetLogger (typeof ($ CurrType $)); $ CurrType $ 포함 : 유형 이름 포함
Henrik

나중에 유형 이름을 변경하면 해당 코드 줄도 업데이트해야하기 때문입니다. 내 것이 더 역동적입니다.
Chris Brandsma

ReSharper는 유형 이름의 모든 인스턴스 이름을 자동으로 변경합니다. GetType ()도 느립니다.
Richard Dingwall 2011 년

9

MS 테스트 단위 테스트

AAA 구문과 Art Of Unit Testing 에있는 명명 규칙을 사용하는 새로운 MS 테스트 단위 테스트

바로 가기 : 테스트 (또는 tst 또는 원하는대로)
사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

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

    // Act


    // Assert

}

매크로 속성 (있는 경우) :

  • MethodName- 테스트중인 메소드의 이름
  • StateUnderTest- 테스트하려는 상태
  • ExpectedBehavior- 예상되는 일

8

변수가 null인지 확인

바로 가기 : ifn
사용 가능 : C # 2.0+ 파일

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

변수가 null이 아닌지 확인

바로 가기 : ifnn
사용 가능 : C # 2.0+ 파일

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

15
C ++에서 C #으로의 전환이 당신을 어떻게 대했습니까?
Ty.

$ var $에 대한 매크로로 '스마트 완성 실행'으로 잘 진행
mklein

멋진 "요다 조건"!! ... 코딩이 방법은) ;-)입니다 현명
bytedev

7

클래스 생성자에 대한 StyleCop 호환 요약 작성

(모든 생성자에 대해 긴 표준 요약을 지속적으로 입력하는 데 지쳐서 StyleCop 규칙 SA1642를 준수하는 경우)

바로 가기 : csum

사용 가능 : C # 2.0+

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

매크로 :

  • classname- 포함 유형 이름-V

7

Assert.AreEqual

단위 테스트에 어설 션을 추가하는 간단한 템플릿

바로 가기 : ae
사용 가능 : C # 2.0+ 파일에서 문이 허용되는 파일

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

유창한 버전 :

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

7

많은 람다

쉬운 중첩을 위해 다른 변수 선언으로 람다 식을 만듭니다.

바로 가기 : la, lb, lc

사용 가능 : 식 또는 쿼리 절이 허용되는 C # 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)));

람다 인수에 x, y 이름을 사용해도 괜찮습니까? 2 ~ 3 개 수준의 중첩 된 람다가있는 경우 각 수준에서 x, y, z의 의미를 암기하고 싶지 않을 것입니다. 귀하의 예를 고려할 때 items.ForEach (item => ... 및 item.Children.ForEach (child => ...)를 사용하여 결국 y.Name 대신 child.Name을 갖게됩니다. 람다 인수의 이름 지정은 for 루프 인덱스 i, j, k와 유사하게 처리 될 수 있다고 생각하지 않습니다.
Ilya Ivanov

6

좀 기다려...

콘솔 응용 프로그램이 종료되기 전에 사용자 입력을 위해 일시 ​​중지합니다.

바로 가기 : 일시 중지

사용 가능 : 문이 허용되는 C # 2.0+ 파일

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

을 사용 Console.ReadKey(true);하고 아무 키나 누를 수 있습니다.
MasterMastic 2013-09-26

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-유형 이름 포함-편집 가능한 발생 없음


5

속성 변경 알림

자주 사용하고 많은 작업을 수행하기 때문에 이것이 제가 가장 좋아하는 것입니다.

바로 가기 : npc

사용 가능 :식이 허용되는 C # 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 일을 수행하지 않을 때입니다.


5

빠른 ExpectedException 바로 가기

내 단위 테스트 속성에 추가하는 바로 가기입니다.

바로 가기 : ee

사용 가능 : 사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

[ExpectedException(typeof($TYPE$))]

이 ExpectedException는 Assert.Throws를 사용하는 대신 NUnit과에서 사용되지 이니까 몇 버전이었다 것을 그냥 빨리 메모 <>
Stécy

예, 모두가 ExpectedExceptionAttribute 사용을 중지하십시오. MSTest를 사용하는 개발자는 오늘도 이것을 사용하는 것을 참조하십시오
bytedev

5

AutoMapper 속성 매핑

지름길: fm

사용 가능 : 문이 허용되는 C # 2.0+ 파일

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

매크로 :

  • 속성-편집 가능한 발생
  • src_property-편집 가능한 발생

노트 :

나는를 칠 수 있도록 람다 "점"을 제거합니다. 즉시 재산 정보를 얻으십시오. AutoMapper ( http://automapper.codeplex.com/ )가 필요합니다 .


4

NUnit 용 테스트 케이스 스텁 만들기

이것은 단위 테스트 실행기 (다른 무시 된 테스트와 마찬가지로)에 표시되는 알림 (구현 또는 테스트 할 기능)의 역할을 할 수 있습니다.

바로 가기 : nts
사용 가능 : 형식 멤버 선언이 허용되는 C # 2.0+ 파일

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

나는 이것에 대한 변형을 수행하지만 본문에 명시적인 Assert.Fail ()을 사용합니다 : aleriel.com/blog/2010/04/07/replace-paper-with-unit-tests
Adam Lear

4

필요한 경우 호출

UI가 아닌 스레드에서 메서드를 호출 할 수 있어야하고 해당 메서드가 호출을 UI 스레드로 마샬링해야하는 WinForms 응용 프로그램을 개발할 때 유용합니다.

바로 가기 : 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
    // ...
}

4

새로운 C # Guid

새로 생성 된 guid 값으로 초기화 된 새 System.Guid 인스턴스를 생성합니다.

바로 가기 : csguid 사용 가능 : C # 2.0+ 파일

new System.Guid("$GUID$")

매크로 속성 :

  • GUID- 새 GUID-False

ReSharper의 최신 버전에는 이제 기본적으로 nguid 바로 가기가 포함됩니다 .
Jamie Keeling

참이지만 C #에서 형식을 초기화하지 않고 guid 값만 생성합니다.
codekaizen 2015 년

4

MSTest 테스트 방법

이것은 약간 절름발이지만 유용합니다. 누군가가 그것으로부터 약간의 유용성을 얻을 수 있기를 바랍니다.

바로 가기 : testMethod

사용 가능 : C # 2.0

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

    //Arrange.

    //Act.

    //Assert.
}

$END$

4

NUnit 설정 방법

바로 가기 : 설정
사용 가능 : 사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

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

좋은 지적. 테스트 픽스처를 하위 클래스로 만들고 싶은 경우를 생각해 볼 수 있습니다 (아마도 일련의 어설 션이 여러 객체에 적용되어야하는 "계약"테스트를 작성하려는 경우).하지만 훨씬 더 일반적인 경우에는 가상 불필요합니다. 편집하겠습니다.
paraquat

이것에 대한 개선 사항 ............ private $ classUnderTestType $ _classUnderTest; [NUnit.Framework.SetUp] public void SetUp () {_classUnderTest = new $ classUnderTestType $ ($ END $); }
bytedev

4

NUnit 분해 방법

바로 가기 : 분해
사용 가능 : 사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

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

3

인수가 null이 아닌지 확인하기 위해 온 전성 검사를 만듭니다.

바로 가기 : eann
사용 가능 : 유형 문이 허용되는 C # 2.0+ 파일

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

매크로 :

  • 내부 -매개 변수 제안-# 1

비고 : 이 코드 조각은 오픈 소스 .NET Lokad.Shared 라이브러리를 대상으로하지만 다른 유형의 인수 검사에 쉽게 적용 할 수 있습니다.


3

새로운 COM 클래스

바로 가기 : comclass

사용 가능 : 유형 멤버 선언 또는 네임 스페이스 선언이 허용되는 C # 2.0+ 파일

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

매크로

  • GUID- 새 GUID
  • NAME - 편집
  • 인터페이스 -편집 가능

2
좋은 템플릿이지만 라이브 템플릿보다는 파일 템플릿에 더 적합 할 수 있습니다.
Drew Noakes

3

호출이 필요하지 않다고 주장

주어진 항목에 대해 올바른 스레드에서 코드가 실행되고 있는지 확인하려는 WinForms 응용 프로그램을 개발할 때 유용합니다. 그 참고 Control구현을 ISynchronizeInvoke.

바로 가기 : ani

사용 가능 : C # 2.0+ 파일 문 허용

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

매크로

  • SYNC_INVOKE- 변수 제안System.ComponentModel.ISynchronizeInvoke

2

추적-Writeline, 형식 포함

서식이 지정된 문자열로 추적을 추가하는 매우 간단한 템플릿입니다 (예 : Debug.WriteLine이 이미 지원함).

바로 가기 : twlf
사용 가능 : C # 2.0+ 파일 (문이 허용되는 파일)

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

매크로 속성 :

  • 인수 - value- EditableOccurence
  • 마스크 - "{0}"- EditableOccurence을

1

새로운 Typemock 아이솔레이터 가짜

바로 가기 : 가짜
이용할 수있는 : [문이 허용되는 C # 2.0 파일에서]

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

매크로 속성 :
* $ TYPE $-새 변수에 대한 유형 제안
* $ Name $- 첫 번째 문자가 소문자 인 다른 변수의 값 ( Type )


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>

기타....


1

log4net XML 구성 블록

템플릿을 직접 가져올 수 있습니다.

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

1

방법을 가상으로 만들기

가상 키워드를 추가합니다. NHibernate, EF 또는 유사한 프레임 워크를 사용할 때 특히 유용합니다. 여기서 메서드 및 / 또는 속성은 지연로드 또는 프록시를 활성화하기 위해 가상이어야합니다.

바로 가기 : v

사용 가능 : 유형 멤버 선언이 허용되는 C # 2.0+ 파일

virtual $END$

여기서 비결은 위에서보기 어려울 수있는 가상 공간 이후의 공간입니다. 실제 템플릿은 재 형식화 코드가 활성화 된 "가상 $ END $"입니다. 이렇게하면 아래의 삽입 지점 (|로 표시)으로 이동하여 v를 입력 할 수 있습니다.

public |string Name { get; set; }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.