web-dev-qa-db-ja.com

使用しているC#のReSharper 4+ライブテンプレートは何ですか?

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

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


[題名]

オプションの説明

ショートカット:ショートカット
以下で利用可能:[AvailabilitySetting]

// Resharper template code snippet
// comes here

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

  • Macro1-値-EditableOccurence
  • Macro2-値-EditableOccurence

94
Rinat Abdullin

単純なラムダ

とてもシンプルでとても便利-小さなラムダ:

ショートカット:x

利用可能:式が許可されるC#。

x => x.$END$

マクロ:なし。

31
Sean Kearon

'Dispose(bool)'メソッドを実装する

実装 Joe DuffyのDisposeパターン

ショートカット: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;

マクロのプロパティ

  • [〜#〜]メンバー[〜#〜]-System.IDisposableの変数を提案-編集可能な発生#1
  • [〜#〜] class [〜#〜]-型名を含む
22
Ed Ball

一部のタイプの新しい単体テストフィクスチャを作成する

ショートカット: 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
14
Rinat Abdullin

文字列がnullまたは空かどうかを確認します。

。Net 4を使用している場合は、string.IsNullOrWhiteSpace()。を使用することをお勧めします。

ショートカット:sne

使用可能:式が許可されているC#2.0+。

string.IsNullOrEmpty($VAR$)

マクロのプロパティ

  • VAR-文字列型の変数を提案します。編集可能= true。
13
Sean Kearon

新しいスタンドアロンの単体テストケースを作成する

ショートカット: ntc
利用可能:タイプメンバー宣言が許可されているC#2.0+ファイル

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

マクロ:

  • テスト-なし-V
11
Rinat Abdullin

現在のタイプのlog4netロガーを宣言します。

ショートカット:ログ

利用可能:型のメンバー宣言が許可されているC#2.0+ファイル

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

マクロのプロパティ

  • [〜#〜] type [〜#〜]-タイプ名を含む
10
Chris Brandsma

MSテストユニットテスト

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

ショートカット:テスト(またはtst、または好きなもの)
以下で利用可能:型のメンバー宣言が許可されているC#2.0+ファイル

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

    // Act


    // Assert

}

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

  • MethodName-テスト中のメソッドの名前
  • StateUnderTest-テストしようとしている状態
  • ExpectedBehavior-あなたが何を期待するか
9
Vaccano

変数がnullかどうかを確認

ショートカット: ifn
以下で利用可能 C#2.0+ファイル

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

変数がnullでないかどうかを確認します

ショートカット: ifnn
以下で利用可能 C#2.0+ファイル

if (null != $var$)
{
    $END$
}
8
Chris Doggett

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

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

ショートカット: csum

利用可能: C#2.0+

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

マクロ:

  • classname-タイプ名を含む-V
7
Dmitrii Lobanov

Assert.AreEqual

単体テストにアサートを追加するシンプルなテンプレート

ショートカット:ae
利用可能:ステートメントが許可されているC#2.0+ファイル

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

流暢バージョン:

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

たくさんのラムダ

ネストを容易にするために、異なる変数宣言を使用してラムダ式を作成します。

ショートカット: 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)));
7
James Kovacs

それを待つ...

コンソールアプリケーションが終了する前にユーザー入力を一時停止します。

ショートカット:一時停止

使用可能:ステートメントが許可されているC#2.0+ファイル

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

依存関係プロパティの生成

依存関係プロパティを生成します

ショートカット: 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-含まれるタイプ名-編集可能なオカレンスなし

6

AutoMapperプロパティマッピング

ショートカット:fm

以下で利用可能:ステートメントが許可されているC#2.0+ファイル

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

マクロ:

  • プロパティ-編集可能な出現
  • src_property-編集可能なオカレンス

注:

ヒットできるように、ラムダ「ドット」をオフのままにします。すぐにプロパティインテリセンスを取得します。 AutoMapper( http://automapper.codeplex.com/ )が必要です。

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

ExpectedExceptionのクイックショートカット

単体テストの属性に追加する簡単なショートカット。

ショートカット:ee

使用可能:使用可能:タイプメンバー宣言が許可されているC#2.0+ファイル

[ExpectedException(typeof($TYPE$))]
5
womp

必要に応じて呼び出す

メソッドが非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
Drew Noakes

NUnitセットアップ方法

ショートカット:設定
利用可能:利用可能:タイプメンバー宣言が許可されているC#2.0+ファイル

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

MSTestテスト方法

これは少し下手ですが、便利です。うまくいけば、誰かがそれからいくつかのユーティリティを得るでしょう。

ショートカット:testMethod

利用可能:C#2.0

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

    //Arrange.

    //Act.

    //Assert.
}

$END$
4
Daver

NUnit Teardownメソッド

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

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

NUnitのテストケーススタブを作成する

これは、(他の無視されたテストと同様に)単体テストランナーに表示される(実装またはテストする機能の)通知として機能します。

ショートカット: nts
利用可能:タイプメンバー宣言が許可されているC#2.0+ファイル

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

新しいC#GUID

新しく生成されたGUID値に初期化された新しいSystem.Guidインスタンスを生成します

ショートカット: csguid 利用可能: C#2.0+ファイル

new System.Guid("$GUID$")

マクロのプロパティ

  • [〜#〜] guid [〜#〜]-新規GUID-False
4
codekaizen

呼び出しのアサートは不要

コードが特定のアイテムの正しいスレッドで実行されていることを確認したいWinFormsアプリケーションを開発するときに役立ちます。 ControlISynchronizeInvokeを実装することに注意してください。

ショートカット:ani

利用可能:C#2.0+ファイルステートメントが許可されます

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

マクロ

  • SYNC_INVOKE-System.ComponentModel.ISynchronizeInvokeの変数を提案
3
Drew Noakes

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

ショートカット:eann
以下で利用可能:typeステートメントが許可されているC#2.0+ファイル

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

マクロ:

  • inner-パラメータの提案-#1

備考:このスニペットはオープンソースの.NETを対象としていますが、 Lokad.Shared ライブラリ、他のタイプの引数チェックに簡単に適合します。

3
Rinat Abdullin

新しいCOMクラス

ショートカット:comclass

利用可能:型メンバー宣言または名前空間宣言が許可されているC#2.0+ファイル

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

マクロ

  • [〜#〜] guid [〜#〜]-新しいGUID
  • [〜#〜] name [〜#〜]-編集可能
  • [〜#〜] interface [〜#〜]-編集可能
3
Ian G

トレース-Writeline、フォーマットあり

フォーマットされた文字列でトレースを追加するための非常にシンプルなテンプレート(Debug.WriteLineは既にサポートされています)。

ショートカット: twlf
使用可能な場所:ステートメントが許可されているC#2.0+ファイル

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

マクロのプロパティ:

  • 引数-value-EditableOccurence
  • マスク-"{0}"-EditableOccurence
2
Ray Hayes

新しいTypemockアイソレーターの偽物

ショートカット:偽物
利用可能:[ステートメントが許可されているc#2.0ファイル]

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

マクロのプロパティ:
* $ TYPE $-新しい変数の推奨タイプ
* $ Name $-another variableType)の値、最初の文字は小文字

1
Karsten

メソッドを仮想化

仮想キーワードを追加します。遅延読み込みまたはプロキシを有効にするためにメソッドやプロパティが仮想である必要があるNHibernate、EF、または同様のフレームワークを使用する場合に特に便利です。

ショートカット: v

使用可能: C#2.0+ファイルで、型メンバーの宣言が許可されています

virtual $END$

ここでの秘訣は、仮想化後のスペースです。これは、上ではわかりにくいかもしれません。実際のテンプレートは「仮想$ END $」で、再フォーマットコードが有効になっています。これにより、下の挿入ポイント(|で示される)に移動し、vと入力できます。

public |string Name { get; set; }
1
James Kovacs

等しい

一般に.NETもデフォルトの「equals」テンプレートも、優れた単純なEqualsメソッドを簡単に作成することはできません。優れたEqualsメソッドの記述方法について therearemanythoughts ですが、90%では次のように十分だと思います単純なケースの。より複雑なものについては、特に継承に関しては、より良いかもしれません Equalsをまったく使用しない

ショートカット:等しい
以下で利用可能:C#2.0+タイプメンバー

public override sealed bool Equals(object other) {
    return Equals(other as $TYPE$);
}

public bool Equals($TYPE$ other) {
    return !ReferenceEquals(other, null) && $END$;
}

public override int GetHashCode() {
    // *Always* call Equals.
    return 0;
}

マクロのプロパティ

  • [〜#〜] type [〜#〜]-タイプ名を含む-編集不可
1
Michael Kropat

私は今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
Bryce Fischer

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

Rhino Mocks Expectメソッド

ショートカット:RhinoMocksExpectMethod

利用可能: C#2.0+ファイル

Expect.Call($EXPECT_CODE$).Return($RETURN_VALUE$);

ショートカット:RhinoMocksExpectVoidMethod

利用可能: C#2.0+ファイル

Expect.Call(delegate { $EXPECT_CODE$; });
0
Ray Vega

Drew Noakesの優れたアイデアを取り入れ、Silverlightのinvokeの実装です。

ショートカット:dca

利用可能:C#3.0ファイル

if (!Dispatcher.CheckAccess())
{
    Dispatcher.BeginInvoke((Action)delegate { $METHOD_NAME$(sender, e); });
    return;
}

$END$

マクロ

  • $METHOD_NAME$現在含まれているメソッドの編集不可能な名前。
0
jhappoldt

Machine.Specifications-のため

Mspecのヘビーユーザーとして、MSpec専用のライブテンプレートをいくつか持っています。理由を設定してエラーをキャッチする簡単な方法を次に示します。

ショートカット: bece
利用可能: C#2.0+ファイルで、型のメンバーの宣言または名前空間の宣言が許可されている

bece-(例外をキャッチして)のため

Protected static Exception exception;
Because of = () => exception = Catch.Exception(() => $something$);
$END$
0

Machine.Specifications-It

ショートカット:それ

使用可能: C#2.0+ファイルで、型メンバーの宣言または名前空間の宣言が許可されている

Machine.Specifications.It $should_$ =
    () => 
    {

    };

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

  • should _-(マクロなし)-EditableOccurence
0

Rhino Mocksのレコード再生構文

ショートカット:RhinoMocksRecordPlaybackSyntax *

利用可能: C#2.0+ファイル

注:このコードスニペットは、MockRepository(var mocks = new new MockRepository();)がすでに宣言され、別の場所で初期化されていることに依存しています。

using (mocks.Record())
{
    $END$
}

using (mocks.Playback())
{

}

*ショートカット名の場合は少し長く見えるかもしれませんが、入力時にインテリセンスを使用すると問題は発生しません。 Rhino Mocksの他のコードスニペットもあるので、名前を完全に修飾すると、視覚的にグループ化しやすくなります

0
Ray Vega