The Push Members Down refactoring allows you to push type members down to an inheritor. This operation is useful when you want to specialize the behavior of a certain type hierarchy. ReSharper analyzes all members of the selected type and makes a list of members which you can push down. Before completing the refactoring, ReSharper also checks for all possible conflicts, for example, whether the members you are trying to push down will be accessible in the destination type.
The reverse functionality is also possible with the Pull Members Up refactoring.
To push members down
- In the editor, place the caret at one of the type members which you want to push down. Example:

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

- In the list of members of the current type, select the checkboxes of the members you want to push down. Use the buttons to the right of the list to quickly select or deselect members.
- Select the checkbox Make abstract if you want the original members to become abstract and its implementation to be moved to the newly created overriding members.
- 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;
- Move adds the documentation comments (if any) of the original member to the new member and removes them from the original member. Select the Doc comments option you want to use. The comments will be either copied, moved or left as is (see example below).
- Click Continue. If no conflicts are present, the refactoring is performed immediately. Example:

See Also
Pull Members Up | Refactoring Code