Jakich szablonów ReSharper 4.0 dla C # używasz?
Udostępnijmy je w następującym formacie:
[Tytuł]
Opcjonalny opis
Skrót: skrót
Dostępne w: [Ustawienie dostępności]
// Resharper template code snippet
// comes here
Właściwości makr (jeśli są obecne):
- Makro1 - wartość - EditableOccurence
- Macro2 - wartość - EditableOccurence
- Poproszę jedno makro na odpowiedź!
- Oto kilka przykładów osprzętu testowego NUnit i samodzielnego przypadku testowego NUnit, które opisują aktywne szablony w sugerowanym formacie.
c#
templates
refactoring
resharper
Rinat Abdullin
źródło
źródło
Odpowiedzi:
Prosta Lambda
Taka prosta, taka przydatna - mała lambda:
Skrót : x
Dostępne : C #, gdzie wyrażenie jest dozwolone.
Makra: brak.
źródło
Zaimplementuj metodę „Dispose (bool)”
Zaimplementuj wzorzec usuwania Joe Duffy'ego
Skrót: pozbądź się
Dostępne w plikach : C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu
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;
Właściwości makr :
źródło
Utwórz nowe urządzenie do testów jednostkowych dla pewnego typu
Skrót: ntf
Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu lub deklaracja przestrzeni nazw
[NUnit.Framework.TestFixtureAttribute] public sealed class $TypeToTest$Tests { [NUnit.Framework.TestAttribute] public void $Test$() { var t = new $TypeToTest$() $END$ } }
Makra:
źródło
Sprawdź, czy ciąg jest pusty lub pusty.
Jeśli używasz .Net 4, możesz preferować użycie string.IsNullOrWhiteSpace ().
Skrót : sne
Dostępne w : C # 2.0+, gdzie wyrażenie jest dozwolone.
string.IsNullOrEmpty($VAR$)
Właściwości makra :
źródło
Utwórz nowy samodzielny przypadek testowy jednostki
Skrót: ntc
Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja typu członka
[NUnit.Framework.TestAttribute] public void $Test$() { $END$ }
Makra:
źródło
Zadeklaruj rejestrator log4net dla bieżącego typu.
Skrót: log
Dostępne w plikach : C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
Właściwości makr :
źródło
Test jednostkowy MS
Nowy test jednostkowy MS Test wykorzystujący składnię AAA i konwencję nazewnictwa znaną z Art Of Unit Testing
Skrót: testowanie (lub tst lub cokolwiek chcesz)
Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu
[TestMethod] public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$() { // Arrange $END$ // Act // Assert }
Właściwości makr (jeśli są obecne):
źródło
Sprawdź, czy zmienna ma wartość null
Skrót: ifn
Dostępne w plikach : C # 2.0+
if (null == $var$) { $END$ }
Sprawdź, czy zmienna nie jest pusta
Skrót: ifnn
Dostępne w plikach : C # 2.0+
if (null != $var$) { $END$ }
źródło
Napisz podsumowanie zgodne ze stylem StyleCop dla konstruktora klas
(jeśli masz dość ciągłego wpisywania długiego standardowego podsumowania dla każdego konstruktora, aby był zgodny z regułą StyleCop SA1642)
Skrót: suma
Dostępne w: C # 2.0+
Initializes a new instance of the <see cref="$classname$"/> class.$END$
Makra:
źródło
Assert.AreEqual
Prosty szablon dodawania potwierdzeń do testu jednostkowego
Skrót : ae
Dostępne w : w plikach C # 2.0+, gdzie instrukcja jest dozwolona
Wersja płynna:
źródło
Wiele jagód
Utwórz wyrażenie lambda z inną deklaracją zmiennej, aby ułatwić zagnieżdżanie.
Skrót: la, lb, lc
Dostępne w plikach : C # 3.0+, w których jest dozwolona klauzula wyrażenia lub zapytania
la definiuje się jako:
funt jest definiowany jako:
lc definiuje się jako:
Jest to podobne do powyższego Sean Kearon, z wyjątkiem tego, że definiuję wiele szablonów lambda live dla łatwego zagnieżdżania lambd. Najczęściej używane jest „ la ”, ale inne są przydatne w przypadku takich wyrażeń:
źródło
Czekaj na to...
Wstrzymaj na wprowadzenie danych przez użytkownika przed zakończeniem aplikacji konsoli.
Skrót: pauza
Dostępne w: plikach C # 2.0+, w których dozwolone jest oświadczenie
System.Console.WriteLine("Press <ENTER> to exit..."); System.Console.ReadLine();$END$
źródło
Console.ReadKey(true);
i pozwoliłbym na naciśnięcie dowolnego klawisza.Generowanie właściwości zależności
Generuje właściwość zależności
Skrót: dp
Dostępne w: C # 3.0, gdzie deklaracja elementu członkowskiego jest dozwolona
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$
Właściwości makr (jeśli są obecne):
PropertyName - brak makra - nr 3
PropertyType - typ
domyślny oczekiwany w tym momencie - nr 2 OwnerType - zawiera nazwę typu - brak możliwości edycji
źródło
Powiadom właściwość o zmianie
To jest mój ulubiony, ponieważ często go używam i robi za mnie dużo pracy.
Skrót : npc
Dostępne w : C # 2.0+, gdzie wyrażenie jest dozwolone.
if (value != _$LOWEREDMEMBER$) { _$LOWEREDMEMBER$ = value; NotifyPropertyChanged("$MEMBER$"); }
Makra :
Użycie : Wewnątrz ustawiacza właściwości, takiego jak ten:
private string _dateOfBirth; public string DateOfBirth { get { return _dateOfBirth; } set { npc<--tab from here } }
Zakłada się, że zmienna zapasowa zaczyna się od „_”. Zastąp to czymkolwiek używasz. Zakłada się również, że masz metodę zmiany właściwości, podobną do tej:
private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } }
W rzeczywistości wersja tego, której używam, jest oparta na lambdzie („bo kocham swoje lambdy!) I tworzy poniższe. Zasady są takie same jak powyżej.
public decimal CircuitConductorLive { get { return _circuitConductorLive; } set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); } }
To znaczy , kiedy nie używam niezwykle eleganckiego i użytecznego PostSharp do wykonania całej operacji INotifyPropertyChanged bez żadnego wysiłku .
źródło
Szybki skrót ExpectedException
Tylko szybki skrót do dodania do moich atrybutów testów jednostkowych.
Skrót : ee
Dostępne w : Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu
[ExpectedException(typeof($TYPE$))]
źródło
Mapowanie właściwości AutoMapper
Skrót: fm
Dostępne w: plikach C # 2.0+, w których dozwolone jest oświadczenie
Makra:
Uwaga:
Zostawiam „kropkę” lambda wyłączoną, aby móc uderzyć. natychmiast i uzyskaj inteligencję własności. Wymaga AutoMapper ( http://automapper.codeplex.com/ ).
źródło
Utwórz skrót dla przypadku testowego dla NUnit
To może służyć jako przypomnienie (o funkcjonalności do zaimplementowania lub przetestowania), które pojawia się w module uruchamiającym testy jednostkowe (jak każdy inny ignorowany test),
Skrót: nts
Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja elementu członkowskiego typu
[Test, Ignore] public void $TestName$() { throw new NotImplementedException(); } $END$
źródło
Wywołaj, jeśli jest to wymagane
Przydatne podczas tworzenia aplikacji WinForms, w których metoda powinna być wywoływana z wątków spoza interfejsu użytkownika, a ta metoda powinna następnie skierować wywołanie do wątku interfejsu użytkownika.
Skrót : nr inw
Dostępne w : C # 3.0+ Files jest dozwolone
if (InvokeRequired) { Invoke((System.Action)delegate { $METHOD_NAME$($END$); }); return; }
Makra
Zwykle użyjesz tego szablonu jako pierwszej instrukcji w danej metodzie, a wynik będzie podobny do:
void DoSomething(Type1 arg1) { if (InvokeRequired) { Invoke((Action)delegate { DoSomething(arg1); }); return; } // Rest of method will only execute on the correct thread // ... }
źródło
Nowy przewodnik C #
Generuje nowe wystąpienie System.Guid zainicjowane do nowej wygenerowanej wartości guid
Skrót: csguid Dostępne w: w plikach C # 2.0+
new System.Guid("$GUID$")
Właściwości makr :
źródło
Metoda testowa MSTest
To trochę kiepskie, ale jest przydatne. Miejmy nadzieję, że ktoś wyciągnie z tego jakąś użyteczność.
Skrót: testMethod
Dostępne w: C # 2.0
[TestMethod] public void $TestName$() { throw new NotImplementedException(); //Arrange. //Act. //Assert. } $END$
źródło
Metoda konfiguracji NUnit
Skrót: konfiguracja
Dostępne w: Dostępne w: C # 2.0+ pliki, w których dozwolona jest deklaracja typu elementu członkowskiego
[NUnit.Framework.SetUp] public void SetUp() { $END$ }
źródło
Metoda NUnit Teardown
Skrót: dezaktywacja
Dostępne w: Dostępne w: plikach C # 2.0+, w których dozwolona jest deklaracja typu członka
[NUnit.Framework.TearDown] public void TearDown() { $END$ }
źródło
Utwórz kontrolę poprawności, aby upewnić się, że argument nigdy nie jest pusty
Skrót: eann
Dostępne w: plikach C # 2.0+, w których dozwolona jest instrukcja typu
Enforce.ArgumentNotNull($inner$, "$inner$");
Makra:
Uwagi: Chociaż ten fragment jest przeznaczony dla biblioteki .NET Lokad.Shared typu open source , można go łatwo dostosować do dowolnego innego rodzaju sprawdzania argumentów.
źródło
Nowa klasa COM
Skrót : comclass
Dostępne w plikach: C # 2.0+, w których jest dozwolona deklaracja elementu członkowskiego typu lub deklaracja przestrzeni nazw
[ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] [Guid("$GUID$")] public class $NAME$ : $INTERFACE$ { $END$ }
Makra
źródło
Assert Invoke nie jest wymagane
Przydatne przy tworzeniu aplikacji WinForms, w których chcesz mieć pewność, że kod jest wykonywany w odpowiednim wątku dla danego elementu. Zwróć uwagę, że
Control
narzędziaISynchronizeInvoke
.Skrót : ani
Dostępne w : C # 2.0+ Files jest dozwolone
Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");
Makra
System.ComponentModel.ISynchronizeInvoke
źródło
Trace - Writeline, z formatem
Bardzo prosty szablon do dodawania śladu ze sformatowanym ciągiem znaków (jak już obsługuje Debug.WriteLine).
Skrót: twlf
Dostępne w: plikach C # 2.0+, w których dozwolone są instrukcje
Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));
Właściwości makr:
value
- EditableOccurence"{0}"
- EditableOccurenceźródło
Nowy fałszywy izolator Typemock
Skrót : fałszywy
Dostępne w : [w plikach C # 2.0, gdzie instrukcja jest dozwolona]
$ TYPE $ $ Name $ Fake = Isolate.Fake.Instance ();
Isolate.WhenCalled (() => $ Name $ Fake.)
Właściwości makr:
* $ TYPE $ - Zaproponuj typ nowej zmiennej
* $ Name $ - Wartość innej zmiennej ( Typ ) z pierwszym znakiem małej litery
źródło
Ponieważ pracuję teraz z Unity, wymyśliłem kilka, które ułatwiają mi życie:
Wpisz Alias
Skrót : ta
Dostępne w : * .xml; * .config
<typeAlias alias="$ALIAS$" type="$TYPE$,$ASSEMBLY$"/>
Deklaracja typu
To jest typ bez nazwy i bez argumentów
Skrót : tp
Dostępne w : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$"/>
Deklaracja typu (z nazwą)
To jest typ z nazwą i bez argumentów
Skrót : tn
Dostępne w : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>
Deklaracja typu z konstruktorem
To jest typ z nazwą i bez argumentów
Skrót : tpc
Dostępne w : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$"> <typeConfig> <constructor> $PARAMS$ </constructor> </typeConfig> </type>
itp....
źródło
Log4net XML Configuration Block
Możesz zaimportować szablon bezpośrednio:
<TemplatesExport family="Live Templates"> <Template uid="49c599bb-a1ec-4def-a2ad-01de05799843" shortcut="log4" description="inserts log4net XML configuration block" text=" <configSections>
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
 </configSections>

 <log4net debug="false">
 <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
 <param name="File" value="logs\\$LogFileName$.log" />
 <param name="AppendToFile" value="false" />
 <param name="RollingStyle" value="Size" />
 <param name="MaxSizeRollBackups" value="5" />
 <param name="MaximumFileSize" value="5000KB" />
 <param name="StaticLogFileName" value="true" />

 <layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%date [%3thread] %-5level %-40logger{3} - %message%newline" />
 </layout>
 </appender>

 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 <layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%message%newline" />
 </layout>
 </appender>

 <root>
 <priority value="DEBUG" />
 <appender-ref ref="LogFileAppender" />
 </root>
 </log4net>
" reformat="False" shortenQualifiedReferences="False"> <Context> <FileNameContext mask="*.config" /> </Context> <Categories /> <Variables> <Variable name="LogFileName" expression="getOutputName()" initialRange="0" /> </Variables> <CustomProperties /> </Template> </TemplatesExport>
źródło
Uczyń metodę wirtualną
Dodaje wirtualne słowo kluczowe. Szczególnie przydatne w przypadku korzystania z NHibernate, EF lub podobnego środowiska, w którym metody i / lub właściwości muszą być wirtualne, aby umożliwić leniwe ładowanie lub proxy.
Skrót: v
Dostępne w pliku : C # 2.0+, w którym dozwolona jest deklaracja elementu członkowskiego typu
virtual $END$
Sztuczka polega na tym, że przestrzeń po wirtualnej może być trudna do zobaczenia powyżej. Rzeczywisty szablon to „virtual $ END $” z włączonym kodem ponownego formatowania. Pozwala to przejść do punktu wstawiania poniżej (oznaczonego |) i wpisać v:
public |string Name { get; set; }
źródło