The Pull Members Up refactoring allows you to move class members to a superclass or an interface. This operation is useful when you want to generalize the behavior of the superclass. ReSharper analyzes all members in the current class and makes a list of members from which you can choose a superclass or interface. Before completing the refactoring, ReSharper also checks for all possible conflicts, for example, whether the members you are trying to move to the base class will be accessible in the destination type.
The reverse functionality is also possible with the Push Members Down refactoring.
To pull members up
- In the editor, place the caret at the member of a class from which you want to pull member(s). Example:

- Do one of the following:
- On the main menu, click ReSharper | Refactor | Pull Members Up.
- Right-click the selection, and on the shortcut menu click Refactor | Pull Members Up.
- Press Ctrl + Shift + R, and then select Pull Members Up.
The Pull Members Up dialog box opens.

- Select the destination type (base type) from the list of available types.
- In the list of members of the current class, select the checkboxes of the members you want to pull up. Use the buttons to the right of the list to quickly select or deselect members.
- Select the checkbox Make abstract if you want the created members to become abstract in the base type. If the checkbox is checked, the original member is then left as is in the current class when the refactoring is performed.
- The Doc comments options are valid only for abstract members. The options work as follows:
- As is does not change the documentation comments (if any) at either the original member or the new member;
- Copy adds the documentation comments (if any) of the original member to the new member (see example below);
- Move adds the documentation comments (if any) of the original member to the new member and removes them from the original member.
- Click Continue. If no conflicts are present, the refactoring is performed immediately. Example from above:

Note : In line with the idea of generalizing your class's behavior, you may want to apply the Use Base Type Where Possible refactoring after pulling members up.
See Also
Push Members Down | Refactoring Code