Frage

Ich habe eine riesige Menge an Wiederholungscode, die ich in der Legacy -Code -Basis ersetzen möchte, und habe Resharper's gefunden Struktursuche und Ersatzfunktion gut für die Aufgabe passen. Ich habe jedoch Probleme damit, dass es meinen Mustern entspricht.

Das Muster, für das ich schnelle Fixes haben möchte, ist:

public string PropertyName
{
    get { return base.GetSubNode(_parameterNode, "ElementName").InnerText; }
    set { base.GetSubNode(_parameterNode, "ElementName").InnerText = value; }
}

Es soll ersetzt werden durch:

public string PropertyName
{
    get { return GetProperty("ElementName"); }
    set { SetProperty("ElementName", value); }
}

Ich habe ein Muster erstellt:

public string $propName$
{
    get { return base.GetSubNode(_parameterNode, $elementName$).InnerText; }
    set { base.GetSubNode(_parameterNode, $elementName$).InnerText = value; }
}

Das Muster stimmt überein, wenn ich eine Suche mache, aber nicht zu einer schnellen Lösung führt. Wenn ich stattdessen ein separates Muster für Getter und Setter erstelle, erhalte ich schnelle Korrekturen, aber das Getter -Muster entspricht sowohl dem Getter als auch dem Setter.

Das Getter -Muster:

base.GetSubNode(_parameterNode, $elementName$).InnerText

Wie kann ich Schnellfixes für dieses Getter/Setter-Paar bekommen?

War es hilfreich?

Lösung

Das folgende Such-/Ersatzmuster funktioniert wie ein Zauber in Resharper 6.1:

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/@KeyIndexDefined">True</s:Boolean>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/Comment/@EntryValue">GetSubNode calls in property accessors</s:String>
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/FormatAfterReplace/@EntryValue">False</s:Boolean>
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/IsReplacePattern/@EntryValue">True</s:Boolean>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/LanguageName/@EntryValue">CSHARP</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/ReplaceComment/@EntryValue">Replace GetSubNode with GetProperty or SetProperty call</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/ReplacePattern/@EntryValue">public string $propName$&#xD;
{&#xD;
    get { return GetProperty($elementName$); }&#xD;
    set { SetProperty($elementName$, value); }&#xD;
}&#xD;
</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/SearchPattern/@EntryValue">public string $propName$&#xD;
{&#xD;
    get { return base.GetSubNode(_parameterNode, $elementName$).InnerText; }&#xD;
    set { base.GetSubNode(_parameterNode, $elementName$).InnerText = value; }&#xD;
}&#xD;
</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/Severity/@EntryValue">SUGGESTION</s:String>
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/ShortenReferences/@EntryValue">False</s:Boolean>
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=elementName/@KeyIndexDefined">True</s:Boolean>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=elementName/Properties/=Maximal/@EntryIndexedValue">-1</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=elementName/Properties/=Minimal/@EntryIndexedValue">-1</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=elementName/Type/@EntryValue">ArgumentPlaceholder</s:String>
    <s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=propName/@KeyIndexDefined">True</s:Boolean>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=propName/Properties/=CaseSensitive/@EntryIndexedValue">True</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=propName/Properties/=ExactType/@EntryIndexedValue">False</s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=propName/Properties/=RegEx/@EntryIndexedValue"></s:String>
    <s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=B4B745BE8847784E9BF34E217AEB9C3B/CustomPatternPlaceholder/=propName/Type/@EntryValue">IdentifierPlaceholder</s:String></wpf:ResourceDictionary>

Speichern Sie es auf a .dotsetings Datei und importieren Sie Ihre Resharper -Installation über Resharper> Optionen verwalten> [Layer -Name]> Einstellungen importieren/exportieren> aus der Datei importieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top