2017-10-17 25 views
1

Après avoir "Extraire la classe" pour extraire quelques méthodes dans leur propre classe, je suis alors parti avec les méthodes originales enveloppant les appels aux méthodes de la nouvelle classe. Existe-t-il un autre refacteur que Resharper pourrait me permettre de faire, de repointer tous les usages aux nouvelles méthodes de la nouvelle classe, et peut-être ensuite de supprimer les anciennes méthodes?Une façon de refactoriser "repoint des usages à des méthodes sur l'autre classe" après l'extraction d'une classe en utilisant Resharper?

Par exemple, après une classe Extrait refactoring, je pourrais avoir:

public class FooSource { 
    private BarSource _barSource = new BarSource(); 
    public Foo GetFoo(...) {...} 
    public Foo GetFooByName(...) {...} 
    public Bar GetBar(...) => _barSource.GetBar(...);    // now a wrapper due to refactoring 
    public Bar GetBarByName(...) => _barSource.GetBarByName(...); // now a wrapper due to refactoring 
} 
public class BarSource { // my new class just generated by Resharper 
    private FooSource _fooSource = FooSource(); // sometimes this reference is needed; sometimes not; not relevant to this question 
    public Bar GetBar(...) {...} 
    public Bar GetBarByName(...) {...} 
} 

A partir de là, je veux rejointoyer tous les usages de FooSource.GetBar et FooSource.GetBarByName utiliser à la place une nouvelle instance de mon nouveau Classe BarSource. Y at-il quelque chose qui m'aidera à faire le plus (ou même seulement un peu) de ce travail automatiquement?

Répondre

1

Le "Inline Method" refactoring (Ctrl +R, je) devrait faire l'affaire.

Exécutez-le contre la méthode wrapper et il doit remplacer toutes les utilisations avec le corps de la méthode.

(Vous pouvez l'invoquer soit à la déclaration de méthode, ou sur un appel à la méthode.)

ReSharper - Inline Method

+0

Merci - Je ne pensais pas de cette opération comme « inline » mais semble convenir. Je vais essayer. Est-il possible de le faire sur plusieurs méthodes à la fois? –

+0

@PatrickSzalapski Je ne pense pas que ce soit; vous devrez intégrer chaque méthode individuellement. –