ReSharper 2025.2 Help

提取类重构

此重构允许您将现有类的成员移动到新类中。 当您需要用多个各自负责单一任务的类替换一个负责多个任务的类时,这将非常有用。

ReSharper 将自动创建一个引用字段,以提供对新创建类的访问。 如果需要,您还可以将提取的成员保留在原始类中作为副本,或者将实现委托给新类中的相同成员。

在下面的示例中,我们将 记录错误 方法提取到新的 日志记录器 类中。

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()); } }

从选定成员创建一个新类

  1. 通过以下方式之一选择您想要移动的类或成员:

    • 在编辑器中,将插入符号放在类或成员的名称上。

    • 文件结构窗口 窗口中选择一个类或成员。

    • 在类视图中选择一个类或成员。

    • 在对象浏览器中选择一个类或成员。

    • 类型依赖图 中选择一个类或成员。

  2. 执行以下操作之一:

    • Control+Shift+R 然后选择 提取类

    • 右键单击并从上下文菜单中选择 重构 | 提取类

    • 从主菜单中选择 ReSharper | 重构 | 提取 | 提取类…

    提取类 对话框将打开。

  3. 为新类指定一个名称,并选择它应该放置的位置——在新文件中或与原始类型相同的文件中。

  4. 选择要移动到新类的成员。 当您选择一个成员时,ReSharper 会建议提取使用了所选成员的其他成员。 您可以通过绿色的 提取 标签识别建议的成员。

    您不必接受此建议,但如果接受,您可以单击 提取所有建议的成员 选择所有这些成员。

  5. 所有选定的成员在 源类成员 列中都有一个选择器。 如果您希望成员在当前类中直接可用,请单击此选择器并为方法和属性选择 创建委托包装器 ,或为属性和字段选择 创建副本

  6. 如果您正在提取一个非公共成员,而该成员被您未提取的其他成员使用,ReSharper 会警告您,如果提取的成员保持非公共状态,这些用法将无法正常工作。 您可以通过单击 提取所有建议的成员 选择相关的依赖成员,或者单击警告图标并选择建议的修复之一:

    ReSharper:提取类重构
  7. 要应用重构,请单击 下一步

  8. 如果未发现冲突,ReSharper 将立即执行重构。 否则,它会提示您 解决冲突

ReSharper。 提取类重构

此功能在以下语言和技术中 受支持

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

此功能在 C# 中可用

此功能在 Visual Basic 中可用

功能在 C++ 中不可用

此功能在 ASP.NET 中不可用

此功能在 Razor 中不可用

此功能在 XAML 中可用

此功能在资源文件中不可用

此功能在构建脚本文件中不可用

此功能在 SQL/NoSQL 文件和注入中不可用

此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。

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