ReSharper Help

Push Members Down

ReSharper | Refactor | Push Members Down…
ReSharper_PushDown

This refactoring helps move members and interface implementations from a base type to one or more derived types. For example, if you have MyBaseClass : IMyInterface and MyDerivedClass : MyBaseClass, this refactoring can help you move members of MyBaseClass to MyDerivedClass or to any of its inheritors. The refactoring can also move the entire implementation of IMyInterface to MyDerivedClass or any of its inheritors.

To push members down

  1. Select a type in one of the following ways:
    • In the editor, set the caret at the name of a type.
    • Select a type in the Solution Explorer.
    • Select a type in the File Structure window.
    • Select a type in the Class View.
    • Select a type in the Object Browser.
    • Select a type in the type dependency diagram.
    Or, alternatively, select a member in the editor or in a tool window.
  2. Do one of the following:
    • On the main menu, choose ReSharper | Refactor | Push Members Down…
    • Right-click and choose Refactor | Push Members Down on the context menu.
    • Press Ctrl+Shift+R and then choose Push Members Down
    The Push Members Down dialog will open.
  3. Select one or more destination types from the list of inheritors.
  4. Select members and/or interfaces that you want to move. You can also click All Public to quickly select all public members and/or Dependent to select members that are referenced by other selected members or implement the selected interfaces.
  5. For any member, you can select Make abstract (if applicable) to make the member abstract in the current class and create its implementation(s) in the target inheritor class(es).
  6. To apply the refactoring, click Next.
  7. If no conflicts are found, ReSharper performs the refactoring immediately. Otherwise, it prompts you to resolve conflicts.
Refactorings__Push_Members_Down__dialog_box

This feature is supported in the following languages/technologies:

C# VB.NET C++ HTML ASPX Razor JavaScript TypeScript CSS XML XAML RESX Build Scripts
feature_available feature_available feature_available

The instructions and examples given here address the use of the feature in C#. For details specific to other languages, see corresponding topics in the ReSharper by Language section.

See Also

Last modified: 30 June 2015