提取类重构
此重构允许您将现有类的成员移动到一个新类中。 当您需要用多个各自负责单一任务的类替换一个负责多个任务的类时,这将非常有用。
JetBrains Rider 将自动创建一个引用字段,以提供对新创建类的访问。 如果需要,您还可以将提取的成员保留在原始类中作为副本,或者将实现委托给新类中的相同成员。
在下面的示例中,我们将 记录错误 方法提取到新的 记录器 类中。
class Shape
{
public void Draw()
{
try { /*draw*/ }
catch (Exception e) { LogError(e); }
}
public static void LogError(Exception e)
{
File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString());
}
}
class Shape
{
public void Draw()
{
try { /*draw*/ }
catch (Exception e) { Logger.LogError(e); }
}
}
class Logger
{
public static void LogError(Exception e)
{
File.WriteAllText(@"c:\Errors\Exception.txt", e.ToString());
}
}
从选定成员创建一个新类
通过以下方式之一选择您想要移动的类或成员:
在编辑器中,将插入点放在类或成员的名称上。
在 结构窗口 窗口中选择一个类或成员。
请执行以下操作之一:
按 Ctrl+Alt+Shift+T 然后选择 提取类。
在主菜单中选择 。
提取类 对话框将打开。
为新类指定一个名称,并指定它应该放置的位置——在新文件中或与原始类型相同的文件中。
选择要移动到新类的成员。 当您选择一个成员时,JetBrains Rider 会建议提取使用了所选成员的其他成员。 您可以通过绿色的 提取 标签识别出建议的成员。
您不必接受此建议,但如果接受,您可以单击 提取所有建议的成员 选择所有这些成员。
所有选定的成员在 源类成员 列中都有一个选择器。 如果您希望成员在当前类中直接可用,请单击此选择器并为方法和属性选择 创建委托包装器 ,或为属性和字段选择 创建副本。
如果您正在提取一个非公共成员,而该成员被您未提取的其他成员使用,JetBrains Rider 会警告您,如果提取的成员保持非公共状态,这些使用将无法正常工作。 您可以通过单击 提取所有建议的成员 选择相关成员,或者单击警告图标并选择建议的修复之一:

要应用重构,请点击 下一步。
如果未发现冲突,JetBrains Rider会立即执行重构。 否则,它会提示您 解决冲突。

最后修改日期: 2025年 9月 26日