提取超类重构
此重构允许您将选定类中的某些成员提取到一个新的基类中。 原始类将扩展创建的基类。
如果当前类型已经实现了任何接口,这些接口也可以提取到新的基类中。
如果您想创建一个抽象类,请将至少一个提取的方法标记为抽象。
在下面的示例中,我们从现有类 图形 提取了一个抽象类 圆形:
public class Circle : IDrawable
{
public Point Center { get; private set; }
public Color MyColor { get; private set; }
public int Radius { get; private set; }
public void Draw()
{
// draw...
}
}
public interface IDrawable
{
void Draw();
}
public abstract class Shape : IDrawable
{
public Color MyColor { get; private set; }
public abstract void Draw();
}
public class Circle : Shape
{
public Point Center { get; private set; }
public int Radius { get; private set; }
public override void Draw()
{
// draw...
}
}
public interface IDrawable
{
void Draw();
}
提取一个基类
通过以下方式之一选择一个类:
执行以下操作之一:
按 Control+Shift+R 然后选择 提取超类。
右键单击并从上下文菜单中选择 重构 | 提取超类。
从主菜单中选择 。
提取超类 对话框将打开。
指定新基类的名称以及它应该放置的位置——在新文件中或与原始类型位于同一文件中。
选择您想要转移到新基类的成员。 成员列表可以包含:
当前类型的成员
选定类型当前实现的接口
要使单个成员成为/保持抽象,请勾选 设为 abstract 列中的复选框。 如果至少有一个成员被标记为抽象,则基类也将被创建为抽象类。
要快速选择所有公共成员,请单击 所有公共。
如果您选择了引用其他成员的成员,则在提取的类中会出现未定义的符号。 单击 依赖 通过选择所有依赖于当前选定成员的成员来解决冲突。
要应用重构,请单击 下一步。
如果未发现冲突,ReSharper 将立即执行重构。 否则,它会提示您 解决冲突。

此功能在以下语言和技术中 受支持:
此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。
最后修改日期: 2025年 9月 27日