C#のどのReSharper 4+ライブテンプレートを使用していますか?[閉まっている]


94

C#用のどのReSharper 4.0テンプレートを使用していますか?

これらを次の形式で共有しましょう。


[題名]

オプションの説明

ショートカット:ショートカット
使用可能な場所: [AvailabilitySetting]

// Resharper template code snippet
// comes here

マクロのプロパティ(存在する場合):

  • Macro1--EditableOccurence
  • Macro2--EditableOccurence


これは主観的であるため、代わりにprogrammers.SEにある必要がありますか?
Timwi、2011

この質問は建設的なものではなく、よりシャープなライブテンプレートとビジュアルスタジオテンプレートに関する多くの情報があります。programmingsolved.blogspot.com/2014/04/snippet-away.html
Thulani Chivandikwa 14

回答:


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-文字列型の変数を提案します。編集可能= true。

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 $:Containing type name
Henrik

後で型名を変更すると、そのコード行も更新する必要があるためです。鉱山はよりダイナミックです。
Chris Brandsma、2011

ReSharperは、型名のすべてのインスタンスの名前を自動的に変更します。GetType()も遅いです。
Richard Dingwall

9

MSテストユニットテスト

Art Of Unit Testingにある AAA構文と命名規則を使用した新しいMS Testユニットテスト

ショートカット:テスト(または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 $のためのマクロとして「スマート完了を実行し、」W /よく合い
mklein

いいヨーダコンディション!! ...このコーディングの方法は賢明ではありません
;

7

クラスコンストラクターのStyleCop準拠の要約を記述する

(すべてのコンストラクターに長い標準の要約を常に入力するのが面倒なので、StyleCopルールSA1642に準拠している場合)

ショートカット: csum

で利用可能: C#2.0+

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

マクロ:

  • クラス名-型名を含む-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 => ...ラムダ引数の命名は、ループインデックス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

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を

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
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ショートカットが含まれています。
ジェイミーキーリング2015年

真ですが、GUID値を生成するだけで、C#で型を初期化しません。
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$
}

いい視点ね。テストフィクスチャをサブクラス化したい場合があるかもしれませんが(おそらく、一連のアサーションが複数のオブジェクトに適用される「契約」テストを作成したい場合)、もっと一般的なケースでは仮想不必要です。編集します。
パラコート

これの改善............ private $ classUnderTestType $ _classUnderTest; [NUnit.Framework.SetUp] public void SetUp(){_classUnderTest = new $ classUnderTestType $($ END $); }
bytedev 2017年

4

NUnit Teardownメソッド

ショートカット:ティアダウン
使用可能:使用可能:型メンバー宣言が許可されているC#2.0+ファイル

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

3

正当性チェックを作成して、引数がnullにならないようにします

ショートカット: eann
利用可能: typeステートメントが許可されている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
  • 名前編集可能
  • インターフェース -編集可能

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.