Quels modèles ReSharper 4.0 pour C # utilisez-vous?
Partageons-les dans le format suivant:
Description facultative
Raccourci: raccourci
Disponible en: [AvailabilitySetting]
// Resharper template code snippet
// comes here
Propriétés des macros (si présent):
Si simple, si utile - un peu de lambda:
Raccourci : x
Disponible : C # où l'expression est autorisée.
x => x.$END$
Macros: aucune.
Implement Dispose Pattern de Joe Duffy
Raccourci: dispose
Disponible en: C # 2.0+ fichiers où la déclaration du membre de type est autorisée
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;
Propriétés des macros :
Raccourci: ntf
Disponible dans: C # 2.0+ fichiers où la déclaration de membre de type ou la déclaration d'espace de nom est autorisée
[NUnit.Framework.TestFixtureAttribute]
public sealed class $TypeToTest$Tests
{
[NUnit.Framework.TestAttribute]
public void $Test$()
{
var t = new $TypeToTest$()
$END$
}
}
Macros:
Si vous utilisez .Net 4, vous préférerez peut-être utiliser string.IsNullOrWhiteSpace ().
Raccourci : sne
Disponible dans : C # 2.0++ où l'expression est autorisée.
string.IsNullOrEmpty($VAR$)
Propriétés de la macro :
Raccourci: ntc
Disponible dans: C # 2.0+ fichiers où la déclaration de membre type est autorisée
[NUnit.Framework.TestAttribute]
public void $Test$()
{
$END$
}
Macros:
Déclarez un enregistreur log4net pour le type actuel.
Raccourci: log
Disponible en: / Fichiers C # 2.0+ où la déclaration de membre type est autorisée
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof($TYPE$));
Propriétés des macros :
Nouveau test d'unité de test MS utilisant la syntaxe AAA et la convention de dénomination figurant dans Art Of Unit Testing
Raccourci: testing (ou tst, ou ce que vous voulez)
Disponible en: C # 2.0+ fichiers où la déclaration du membre de type est autorisée
[TestMethod]
public void $MethodName$_$StateUnderTest$_$ExpectedBehavior$()
{
// Arrange
$END$
// Act
// Assert
}
Propriétés des macros (si présent):
Raccourci: ifn
Disponible en: C # 2.0 + fichiers
if (null == $var$)
{
$END$
}
Raccourci: ifnn
Disponible en: C # 2.0 + fichiers
if (null != $var$)
{
$END$
}
(si vous en avez assez de taper constamment un résumé standard long pour chaque constructeur afin qu'il soit conforme à la règle StyleCop SA1642)
Raccourci: csum
Disponible en: C # 2.0+
Initializes a new instance of the <see cref="$classname$"/> class.$END$
Macros:
Assert.AreEqual
Modèle simple pour ajouter des assertions à un test unitaire
Raccourci : ae
Disponible dans : dans les fichiers C # 2.0+ où l'instruction est autorisée
Assert.AreEqual($expected$, $actual$);$END$
Version courante:
Assert.That($expected$, Is.EqualTo($actual$));$END$
Créez une expression lambda avec une déclaration de variable différente pour une imbrication facile.
Raccourci: la, lb, lc
Disponible en: C # 3.0+ fichiers où expression ou clause de requête est autorisée
la est défini comme:
x => x.$END$
lb est défini comme suit:
y => y.$END$
lc est défini comme:
z => z.$END$
Ceci est similaire à Sean Kearon ci-dessus, sauf que je définis plusieurs modèles vivants lambda pour une imbrication facile des lambdas. " la " est le plus couramment utilisé, mais d'autres sont utiles lorsqu'il s'agit d'expressions comme celle-ci:
items.ForEach(x => x.Children.ForEach(y => Console.WriteLine(y.Name)));
Pause pour la saisie de l'utilisateur avant la fin d'une application console.
Raccourci: pause
Disponible en: / Fichiers C # 2.0+ où la déclaration est autorisée
System.Console.WriteLine("Press <ENTER> to exit...");
System.Console.ReadLine();$END$
Génération de propriétés de dépendance
Génère une propriété de dépendance
Raccourci: dp
Disponible en: C # 3.0 où la déclaration du membre est autorisée
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$
Propriétés des macros (si présentes):
PropertyName - Aucune macro - # 3
PropertyType - Type de devin attendu à ce stade - # 2
OwnerType - Contenant le nom du type - Aucune occurrence modifiable
Raccourci: fm
Disponible en: C # 2.0+ fichiers où l'instruction est autorisée
.ForMember(d => d$property$, o => o.MapFrom(s => s$src_property$))
$END$
Macros:
Note:
Je laisse le "point" lambda désactivé pour pouvoir frapper. immédiatement et obtenir propriété intellisense. Nécessite AutoMapper ( http://automapper.codeplex.com/ ).
C’est mon préféré parce que je l’utilise souvent et que cela me demande beaucoup de travail.
Raccourci : npc
Disponible dans : C # 2.0+ où l'expression est autorisée.
if (value != _$LOWEREDMEMBER$)
{
_$LOWEREDMEMBER$ = value;
NotifyPropertyChanged("$MEMBER$");
}
Macros :
Usage : Dans un créateur de propriété comme celui-ci:
private string _dateOfBirth;
public string DateOfBirth
{
get { return _dateOfBirth; }
set
{
npc<--tab from here
}
}
Il suppose que votre variable de support commence par un "_". Remplacez-le par ce que vous utilisez. Il suppose également que vous avez une méthode de changement de propriété qui ressemble à ceci:
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
En réalité, la version que j’utilise est à base de lambda (car j’adore mes lambdas!) Et produit le texte ci-dessous. Les principes sont les mêmes que ci-dessus.
public decimal CircuitConductorLive
{
get { return _circuitConductorLive; }
set { Set(x => x.CircuitConductorLive, ref _circuitConductorLive, value); }
}
C’est à ce moment-là que je n’utilise pas le très élégant et utile PostSharp pour faire toute la chose INotifyPropertyChanged sans effort , c’est.
Juste un raccourci rapide à ajouter à mes attributs de test unitaire.
Raccourci : ee
Disponible en : Disponible en: C # 2.0+ fichiers où la déclaration du membre de type est autorisée
[ExpectedException(typeof($TYPE$))]
Utile lors du développement d'applications WinForms où une méthode doit pouvoir être appelée à partir de threads non UI, et cette méthode doit ensuite diriger l'appel sur le thread UI.
Raccourci : inv
Disponible dans : L'instruction C # 3.0+ est autorisée
if (InvokeRequired)
{
Invoke((System.Action)delegate { $METHOD_NAME$($END$); });
return;
}
Macros
Vous devriez normalement utiliser ce modèle en tant que première instruction d'une méthode donnée et le résultat ressemble à:
void DoSomething(Type1 arg1)
{
if (InvokeRequired)
{
Invoke((Action)delegate { DoSomething(arg1); });
return;
}
// Rest of method will only execute on the correct thread
// ...
}
Raccourci: setup
Disponible en: Disponible en: C # 2.0 + fichiers où la déclaration de membre de type est autorisée
[NUnit.Framework.SetUp]
public void SetUp()
{
$END$
}
C'est un peu nul, mais c'est utile. J'espère que quelqu'un en tirera quelque utilité.
Raccourci: testMethod
Disponible en: C # 2.0
[TestMethod]
public void $TestName$()
{
throw new NotImplementedException();
//Arrange.
//Act.
//Assert.
}
$END$
Raccourci: démontage
Disponible en: Disponible en: C # 2.0 + fichiers où la déclaration de membre de type est autorisée
[NUnit.Framework.TearDown]
public void TearDown()
{
$END$
}
Celui-ci pourrait servir de rappel (de la fonctionnalité à implémenter ou à tester) qui apparaît dans le programme d'exécution des tests unitaires (comme tout autre test ignoré),
Raccourci: nts
Disponible dans: C # 2.0+ fichiers où la déclaration de membre type est autorisée
[Test, Ignore]
public void $TestName$()
{
throw new NotImplementedException();
}
$END$
Génère une nouvelle instance System.Guid initialisée avec une nouvelle valeur guid générée
Raccourci: csguid Disponible en: en C # 2.0 + fichiers
new System.Guid("$GUID$")
Propriétés des macros :
Utile lors du développement d'applications WinForms où vous voulez être sûr que le code s'exécute sur le bon thread pour un élément donné. Notez que Control
implémente ISynchronizeInvoke
.
Raccourci : ani
Disponible dans : L'instruction C # 2.0+ est autorisée
Debug.Assert(!$SYNC_INVOKE$.InvokeRequired, "InvokeRequired");
Macros
System.ComponentModel.ISynchronizeInvoke
Raccourci: eann
Disponible en: C # 2.0+ fichiers où l'instruction type est autorisée
Enforce.ArgumentNotNull($inner$, "$inner$");
Macros:
Remarques: Bien que ce fragment de code cible Open Source .NET Lokad.Shared library, il pourrait être facilement adapté à tout autre type de vérification d'argument.
Raccourci : comclass
Disponible dans : Fichiers C # 2.0+ où la déclaration de membre de type ou la déclaration d'espace de nom est autorisée
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("$GUID$")]
public class $NAME$ : $INTERFACE$
{
$END$
}
Macros
Modèle très simple pour ajouter une trace avec une chaîne mise en forme (comme Debug.WriteLine le supporte déjà).
Raccourci: twlf
Disponible en: / Fichiers C # 2.0+ où l'instruction est autorisée
Trace.WriteLine(string.Format("$MASK$",$ARGUMENT$));
Propriétés des macros:
value
- EditableOccurence"{0}"
- EditableOccurence Raccourci : faux
Disponible dans : [dans les fichiers c # 2.0 où l'instruction est autorisée]
$ TYPE $ $ Nom $ Fake = Isolate.Fake.Instance ();
Isolate.WhenCalled (() => $ Name $ Fake.)
Propriétés des macros:
* $ TYPE $ - Suggère le type d'une nouvelle variable
* $ Name $ - Valeur de une autre variable ( Type ) avec le premier caractère en minuscule
Ajoute un mot clé virtuel. Particulièrement utile lorsque vous utilisez NHibernate, EF ou un cadre similaire dans lequel les méthodes et/ou les propriétés doivent être virtuelles pour permettre le chargement différé ou le proxy.
Raccourci: v
Disponible en: / Fichier C # 2.0+ où la déclaration du membre de type est autorisée
virtual $END$
L'astuce ici est l'espace après virtuel, ce qui peut être difficile à voir ci-dessus. Le modèle actuel est "virtual $ END $" avec le code de reformatage activé. Cela vous permet d’aller au point d’insertion ci-dessous (noté |) et de taper v:
public |string Name { get; set; }
Ni .NET en général, ni le modèle par défaut “equals” ne permettent pas de créer facilement une bonne méthode simple Equals. Alors que icisontbeaucouppensées on comment écrire une bonne méthode Equals, je pense que ce qui suit suffit pour 90% des cas simples. Pour tout ce qui est plus compliqué - en particulier en matière d'héritage - il serait peut-être préférable de ne pas utiliser Equals du tout .
Raccourci: est égal à
Disponible en: C # 2.0+ membres de type
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;
}
Propriétés des macros :
Depuis que je travaille avec Unity en ce moment, j'en ai créé quelques-uns pour me faciliter la vie:
Raccourci : ta
Disponible en : * .xml; * .config
<typeAlias alias="$ALIAS$" type="$TYPE$,$Assembly$"/>
C'est un type sans nom ni argument
Raccourci : tp
Disponible en : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$"/>
C'est un type avec un nom et aucun argument
Raccourci : tn
Disponible en : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$" name="$NAME$"/>
C'est un type avec un nom et aucun argument
Raccourci : tpc
Disponible en : * .xml; * .config
<type type="$TYPE$" mapTo="$MAPTYPE$">
<typeConfig>
<constructor>
$PARAMS$
</constructor>
</typeConfig>
</type>
etc....
Bloc de configuration XML log4net
Vous pouvez importer le modèle directement:
<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>
Raccourci : RhinoMocksExpectMethod
Disponible en: C # 2.0+ fichiers
Expect.Call($EXPECT_CODE$).Return($RETURN_VALUE$);
Raccourci : RhinoMocksExpectVoidMethod
Disponible en: C # 2.0+ fichiers
Expect.Call(delegate { $EXPECT_CODE$; });
Empruntant à Drew Noakes excellente idée, voici une implémentation de invoke pour Silverlight.
Raccourci: dca
Disponible dans: fichiers C # 3.0
if (!Dispatcher.CheckAccess())
{
Dispatcher.BeginInvoke((Action)delegate { $METHOD_NAME$(sender, e); });
return;
}
$END$
Macros
$METHOD_NAME$
nom non éditable de la méthode contenant en cours.En tant qu'utilisateur lourd de mspec, j'ai plusieurs modèles live spécialement pour MSpec. En voici un rapide pour configurer un élément et détecter l’erreur.
Raccourci: bece
Disponible dans: C # 2.0+ fichiers où la déclaration de membre de type ou la déclaration d'espace de nom est autorisée
bece - À cause de (avec exception)
Protected static Exception exception;
Because of = () => exception = Catch.Exception(() => $something$);
$END$
Raccourci: it
Disponible en: C # 2.0 + fichiers où la déclaration de membre de type ou la déclaration d'espace de nom est autorisée
Machine.Specifications.It $should_$ =
() =>
{
};
Propriétés des macros (si présent):
Raccourci : RhinoMocksRecordPlaybackSyntax *
Disponible en: C # 2.0+ fichiers
Remarque: Cet extrait de code dépend du fait que MockRepository (var mocks = new new MockRepository();
) est déjà déclaré et initialisé ailleurs.
using (mocks.Record())
{
$END$
}
using (mocks.Playback())
{
}
* peut sembler un peu long pour un nom de raccourci mais avec intellisense, ce n’est pas un problème pour taper. vous avez également d’autres extraits de code pour Rhino Mocks; il est donc plus facile de les regrouper visuellement en les qualifiant.