C # için hangi ReSharper 4+ canlı şablonlarını kullanıyorsunuz? [kapalı]


94

C # için hangi ReSharper 4.0 şablonlarını kullanıyorsunuz?

Bunları aşağıdaki formatta paylaşalım:


[Başlık]

İsteğe bağlı açıklama

Kısayol: kısayol
Kullanılabilir: [AvailabilitySetting]

// Resharper template code snippet
// comes here

Makro özellikleri (varsa):

  • Macro1 - Değer - Düzenlenebilir Doğruluk
  • Macro2 - Değer - Düzenlenebilir Doğruluk


Bu, programcılar için mi olmalı, bunun yerine öznel olduğu için mi?
Timwi

Bu soru yapıcı değil ve canlı şablonlar ve görsel stüdyo şablonlarını yeniden paylaşma hakkında pek çok bilgi var. programmingsolved.blogspot.com/2014/04/snippet-away.html
Thulani Chivandikwa

Yanıtlar:


31

Basit Lambda

Çok basit, çok kullanışlı - küçük bir lambda:

Kısayol : x

Kullanılabilir : İfadeye izin verilen C #.

x => x.$END$

Makrolar: yok.


22

'Dispose (bool)' Yöntemini uygulayın

Joe Duffy'nin İmha Modelini Uygulayın

Kısayol: atma

Kullanılabilir: tip üye bildirimine izin verilen C # 2.0+ dosyalar

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;

Makro özellikleri :

  • ÜYE - System.IDisposable değişkenini önerin - Düzenlenebilir Oluşum # 1
  • CLASS - Tür adını içeren

14

Bazı tipler için yeni birim test fikstürü oluşturun

Kısayol: ntf
Kullanılabilir: tür üye bildirimine veya ad alanı bildirimine izin verilen C # 2.0+ dosyalar

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

Makrolar:

  • TypeToTest - yok - # 2
  • Test - yok - V

13

Bir dizenin null veya boş olup olmadığını kontrol edin.

.Net 4 kullanıyorsanız, string.IsNullOrWhiteSpace () kullanmayı tercih edebilirsiniz.

Kısayol : sne

Kullanılabilir : C # 2.0+ ifadeye izin verildiğinde.

string.IsNullOrEmpty($VAR$)

Makro özellikler :

  • VAR - dize türünde bir değişken önerin. Düzenlenebilir = doğru.

11

Yeni bağımsız birim test senaryosu oluşturun

Kısayol: ntc
Kullanılabilir: tür üye bildirimine izin verilen C # 2.0+ dosyalar

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

Makrolar:

  • Test - yok - V

10

Geçerli tür için bir log4net günlükçü bildirin.

Kısayol: günlük

Kullanılabilir: tip üye bildirimine izin verilen C # 2.0+ dosyalar

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

Makro özellikleri :

  • TYPE - Tür adını içeren

Daha keskin bir şekilde, neden bunu kullanmıyorsunuz? private static salt okunur ILog _Logger = LogManager.GetLogger (typeof ($ CurrType $)); $ CurrType $ ile: Tür adı içeren
Henrik

Çünkü tür adını daha sonra değiştirirsem, o kod satırını da güncellemem gerekir. Benimki daha dinamik.
Chris Brandsma

ReSharper, bir tür adının tüm örneklerini otomatik olarak yeniden adlandırır. GetType () da yavaştır.
Richard Dingwall

9

MS Test Ünitesi Testi

AAA sözdizimi ve Art of Unit Testing'de bulunan adlandırma kuralını kullanan yeni MS Test Ünitesi testi

Kısayol: test etme (veya tst veya ne istersen)
Kullanılabilir: tip üye bildirimine izin verilen C # 2.0+ dosyalar

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

    // Act


    // Assert

}

Makro özellikleri (varsa):

  • MethodName - Test edilen yöntemin adı
  • StateUnderTest - Test etmeye çalıştığınız durum
  • ExpectedBehavior - Olmasını beklediğiniz şey

8

Değişkenin boş olup olmadığını kontrol edin

Kısayol: ifn
Kullanılabilir: C # 2.0+ dosyaları

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

Değişkenin boş olup olmadığını kontrol edin

Kısayol: ifnn
Kullanılabilir: C # 2.0+ dosyaları

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

15
C ++ 'dan C #' a geçiş size nasıl davrandı?
Ty.

$ Var $
mklein

Güzel "Yoda Koşulları" !! ...
aksi takdirde

7

Sınıf yapıcısı için StyleCop uyumlu özet yazın

(Her kurucu için uzun standart özet yazmaktan sıkıldıysanız, böylece StyleCop kuralı SA1642 ile uyumludur)

Kısayol: csum

Kullanılabilir: C # 2.0+

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

Makrolar:

  • sınıf adı - Tür adını içeren - V

7

Assert.AreEqual

Birim testine iddialar eklemek için basit şablon

Kısayol : ae
Kullanılabilir : ifadeye izin verilen C # 2.0+ dosyalarda

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

Akıcı versiyon:

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

7

Çok sayıda Lambdas

Kolay iç içe yerleştirme için farklı bir değişken bildirimine sahip bir lambda ifadesi oluşturun.

Kısayol: la, lb, lc

Kullanılabilir: İfade veya sorgu yan tümcesine izin verilen C # 3.0+ dosyalarda

la şu şekilde tanımlanır:

x => x.$END$

lb şu şekilde tanımlanır:

y => y.$END$

lc şu şekilde tanımlanır:

z => z.$END$

Bu, yukarıdaki Sean Kearon'a benzer, ancak lambdaların kolay yerleştirilmesi için birden çok lambda canlı şablon tanımlıyorum. En yaygın olarak " la " kullanılır, ancak diğerleri aşağıdaki gibi ifadelerle uğraşırken kullanışlıdır:

items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));

lambda argümanları için x, y isimlerinin kullanılması uygun mudur? iki-üç seviyeli iç içe lambdalarınız varsa, muhtemelen x, y, z'nin her seviyede ne anlama geldiğini ezberlemek istemezsiniz. Örneğinizi göz önünde bulundurarak, items.ForEach (item => ... ve item.Children.ForEach (child => ...) ile giderdim böylece sonunda y.Name yerine child.Name olurdu. Lambdas bağımsız değişkenlerinin isimlendirilmesinin i, j, k döngü dizinlerine benzer şekilde ele alınabileceğini sanmıyorum
Ilya Ivanov

6

Bunun için bekle...

Bir konsol uygulamasının sonundan önce kullanıcı girişi için duraklatın.

Kısayol: duraklat

Kullanılabilir: C # 2.0+ ifadeye izin verilen dosyalar

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

Kullanırım Console.ReadKey(true);ve herhangi bir tuşa basılmasına izin veririm .
MasterMastic

6

Bağımlılık özelliği oluşturma

Bir bağımlılık özelliği oluşturur

Kısayol: dp
Mevcut içinde: C # 3.0 üyesi bildirimi izin verilir

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$

Makro özellikleri (varsa):

ÖzellikAdı - Makro Yok - # 3
Özellik Türü - Bu noktada tahmin türü bekleniyor - # 2 Sahip
Türü - Tür adı içeren - düzenlenebilir bir oluşum yok


5

Değişen Mülkü Bildir

Bu benim favorim çünkü sık kullanıyorum ve benim için çok iş yapıyor.

Kısayol : npc

Kullanılabilir : C # 2.0+ ifadeye izin verildiğinde.

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

Makrolar :

  • ÜYE - Üye türü adını içerir. Düzenlenemez. Not: Bunun listede ilk sırada olduğundan emin olun.
  • LOWEREDMEMBER - İlk karakteri küçük harfle yazılan ÜYE'nin değeri. Düzenlenemez.

Kullanım : Bunun gibi bir özellik belirleyicinin içinde:

private string _dateOfBirth;
public string DateOfBirth
{
   get { return _dateOfBirth; }
   set
   {
      npc<--tab from here
   }
}

Destek değişkeninizin "_" ile başladığını varsayar. Bunu ne kullanırsanız kullanın. Ayrıca, aşağıdaki gibi bir özellik değiştirme yöntemine sahip olduğunuzu varsayar:

private void NotifyPropertyChanged(String info)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
   }
}

Gerçekte, kullandığım bunun versiyonu lambda tabanlıdır ('çünkü lambdalarımı seviyorum!) Ve aşağıdakileri üretir. İlkeler yukarıdakilerle aynıdır.

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

İşte o zaman , tüm INotifyPropertyChanged olayını çabasız yapmak için son derece zarif ve kullanışlı PostSharp'ı kullanmıyorum , yani.


5

Quick ExpectedException Kısayolu

Birim testi niteliklerime eklemek için hızlı bir kısayol.

Kısayol : ee

Kullanılabilir : Tür üye bildirimine izin verilen C # 2.0+ dosyalarda kullanılabilir

[ExpectedException(typeof($TYPE$))]

Şimdi, ExpectedException'ın Assert.Throws <>
Stécy

Evet lütfen lütfen herkes ExpectedExceptionAttribute kullanmayı bırakın, MSTest kullanan geliştiricilerin bugün bile bunu kullandığını görün :-(
bytedev

5

AutoMapper Özellik Eşleme

Kısayol: fm

Kullanılabilir: C # 2.0+ ifadeye izin verilen dosyalar

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

Makrolar:

  • özellik - düzenlenebilir oluşum
  • src_property - düzenlenebilir olay

Not:

Lambda "noktasını" kapalı bıraktım ki vurabileyim. hemen ve mülkiyet istihbaratı alın. AutoMapper gerektirir ( http://automapper.codeplex.com/ ).


4

NUnit için test durumu koçanı oluşturun

Bu, birim test çalıştırıcısında görünen (diğer herhangi bir göz ardı edilen test gibi) bir hatırlatıcı (uygulama veya test etme işlevselliği) işlevi görebilir,

Kısayol: nts
Kullanılabilir: tip üye bildirimine izin verilen C # 2.0+ dosyalar

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

Bunun bir varyasyonunu yapıyorum, ancak gövdede açık Assert.Fail () ile: aleriel.com/blog/2010/04/07/replace-paper-with-unit-tests
Adam Lear

4

Gerekirse Çağır

Bir yöntemin UI olmayan iş parçacıklarından çağrılabilir olması gereken WinForms uygulamaları geliştirirken kullanışlıdır ve bu yöntem daha sonra aramayı UI iş parçacığına yönlendirmelidir.

Kısayol : inv

Kullanılabilir : C # 3.0+ dosya ifadesine izin verilir

if (InvokeRequired)
{
    Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
    return;
}

Makrolar

  • METHOD_NAME - Tür üye adını içeren

Normalde bu şablonu belirli bir yöntemde ilk ifade olarak kullanırsınız ve sonuç şuna benzer:

void DoSomething(Type1 arg1)
{
    if (InvokeRequired)
    {
        Invoke((Action)delegate { DoSomething(arg1); });
        return;
    }

    // Rest of method will only execute on the correct thread
    // ...
}

4

Yeni C # Kılavuzu

Yeni oluşturulan kılavuz değeriyle başlatılan yeni bir System.Guid örneği oluşturur

Kısayol: csguid Kullanılabilir: C # 2.0+ dosyalarda

new System.Guid("$GUID$")

Makro özellikleri :

  • GUID - Yeni GUID - Yanlış

ReSharper'ın son sürümleri artık varsayılan olarak nguid kısayolunu içeriyor .
Jamie Keeling

Doğru, ancak yalnızca bir kılavuz değeri oluşturur, C # 'da türü başlatmaz.
codekaizen

4

MSTest Test Yöntemi

Bu biraz topal ama kullanışlı. Umarım birisi bundan bir fayda sağlar.

Kısayol: testMethod

Mevcut: C # 2.0

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

    //Arrange.

    //Act.

    //Assert.
}

$END$

4

NUnit Kurulum yöntemi

Kısayol: kurulum
Kullanılabilir: Kullanılabilir: tür üye bildirimine izin verilen C # 2.0+ dosyalar

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

İyi bir nokta. Armatürleri alt sınıflara ayırmak isteyebileceğiniz bazı durumları düşünebilirim (belki bir dizi iddianın bir dizi nesneye uygulanması gereken "sözleşme" testleri yazmak istiyorsanız), ancak çok daha yaygın durumda, sanal gereksizdir. Düzenleyeceğim.
paraquat

Bunda bir iyileştirme ............ private $ classUnderTestType $ _classUnderTest; [NUnit.Framework.SetUp] public void SetUp () {_classUnderTest = new $ classUnderTestType $ ($ END $); }
bytedev

4

NUnit Teardown yöntemi

Kısayol: teardown Şurada
kullanılabilir: Kullanılabilir: tür üye bildirimine izin verilen C # 2.0+ dosyalar

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

3

Bir argümanın asla boş olmadığından emin olmak için akıl sağlığı kontrolü oluşturun

Kısayol: eann
Kullanılabilir: tür ifadesine izin verilen C # 2.0+ dosyalarda

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

Makrolar:

  • - Parametre öner - # 1

Açıklamalar: Bu kod parçacığı açık kaynak .NET Lokad.Shared kitaplığını hedeflese de , diğer herhangi bir bağımsız değişken denetimine kolayca uyarlanabilir.


3

Yeni COM Sınıfı

Kısayol : comclass

Kullanılabilir : tür üye bildirimine veya ad alanı bildirimine izin verilen C # 2.0+ dosyalar

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

Makrolar

  • GUID - Yeni GUID
  • NAME - Düzenlenebilir
  • INTERFACE - Düzenlenebilir

2
Güzel şablon, ancak bu, canlı bir şablon yerine bir dosya şablonuna daha uygun olabilir.
Drew Noakes

3

Onay Çağrısı Gerekli Değil

Kodun belirli bir öğe için doğru iş parçacığı üzerinde yürütüldüğünden emin olmak istediğiniz WinForms uygulamaları geliştirirken kullanışlıdır. Not Controluygular ISynchronizeInvoke.

Kısayol : ani

Kullanılabilir : C # 2.0+ dosya ifadesine izin verilir

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

Makrolar

  • SYNC_INVOKE - Değişken önerinSystem.ComponentModel.ISynchronizeInvoke

2

İz - Writeline, formatlı

Biçimlendirilmiş bir dizeyle izleme eklemek için çok basit bir şablon (Debug.WriteLine zaten desteklediği gibi).

Kısayol: twlf
Kullanılabilir: C # 2.0+ ifadeye izin verilen dosyalar

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

Makro özellikleri:

  • Bağımsız Değişken - value- Düzenlenebilir Doğruluk
  • Maske - "{0}"- Düzenlenebilir Doğruluk

1

Yeni Typemock izolatör sahte

Kısayol : sahte
Kullanılabilir : [ifadeye izin verilen c # 2.0 dosyalarında]

$ TYPE $ $ İsim $ Fake = İzole.Fake.Instance ();
Isolate.WhenCalled (() => $ İsim $ Sahte.)

Makro özellikleri:
* $ TYPE $ - Yeni bir değişken için tür önerin
* $ İsim $ - İlk karakterin küçük harf olduğu başka bir değişkenin değeri ( Tür )


1

Şu anda Unity ile çalıştığım için hayatımı biraz daha kolaylaştırmak için birkaç tane buldum:


Tür Takma Ad

Kısayol : ta
Kullanılabilir : * .xml; * .config

<typeAlias alias="$ALIAS$" type="$TYPE$,$ASSEMBLY$"/>

Tip Beyanı

Bu, adı ve argümanı olmayan bir türdür

Kısayol : tp
Kullanılabilir : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$"/>

Tip Beyanı (adıyla birlikte)

Bu, adı olan ve argümansız bir türdür

Kısayol : tn
Kullanılabilir : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>

Yapıcılı Tip Beyanı

Bu, adı olan ve argümansız bir türdür

Kısayol : tpc
Kullanılabilir : * .xml; * .config

<type type="$TYPE$" mapTo="$MAPTYPE$">
  <typeConfig>
    <constructor>
        $PARAMS$
    </constructor>
  </typeConfig>
</type>

vb....


1

log4net XML Yapılandırma Bloğu

Şablonu doğrudan içe aktarabilirsiniz:

<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

Yöntemi Sanal Hale Getirin

Sanal anahtar kelime ekler. Yöntemlerin ve / veya özelliklerin tembel yüklemeyi veya proxy oluşturmayı etkinleştirmek için sanal olması gereken NHibernate, EF veya benzer çerçeve kullanıldığında özellikle yararlıdır.

Kısayol: v

Kullanılabilir: tip üye bildirimine izin verilen C # 2.0+ dosyası

virtual $END$

Buradaki hile, yukarıda görülmesi zor olabilecek sanaldan sonraki boşluktur. Gerçek şablon, yeniden biçimlendirme kodu etkinleştirilmiş "sanal $ END $" şeklindedir. Bu, aşağıdaki ekleme noktasına (| ile gösterilir) gitmenize ve v yazmanıza olanak tanır:

public |string Name { get; set; }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.