2016-06-06 7 views
4

Angenommen, ich habe eine Klasse:Konvertieren von Erweiterungsmethoden in Instanzmethoden mit ReSharper?

public class Foo 
{ 
    public int Bar { get; set; } 
} 

Und eine Erweiterungsmethode:

public static class FooExtensions 
{ 
    public static void DoSomething(this Foo foo, int someNumber) 
    { 
     foo.Bar += someNumber; 
    } 
} 

Was die bequemste Weg wäre, die FooExtensions Klasse und ändern Foo so wird es zu entfernen:

public class Foo 
{ 
    public int Bar { get; set; } 

    public void DoSomething(int someNumber) 
    { 
     Bar += someNumber; 
    } 
} 

ReSharper scheint keine einstufige Aktion zu bieten, um dies zu tun (seltsamerweise scheint das ein hübsches s zu sein) traightforward refactoring), aber welche anderen Aktionen könnte ich kombinieren, um zu viel Kopieren/Einfügen und manuelle Arbeit zu vermeiden?

Antwort

3

Offenbar gibt es ist eine ReSharper Aktion dafür, aber es ist ein bisschen unbeholfen benannt (imho). Es heißt "Make Method Non-Static".

Die Dokumentation kann here gefunden werden. Beachten Sie, dass Erweiterungsmethoden speziell nicht erwähnt werden.

Das gleiche Refactoring funktioniert für andere Arten von statischen Methoden (Nicht-Erweiterung), was wahrscheinlich die Namensgebung erklärt.