ReSharper 2025.2 Help

生成处置模式

ReSharper 帮助您根据类所拥有的资源类型自动生成各种 IDisposable 接口 的实现:

  • 如果您的类仅拥有托管的 IDisposable 接口 资源,ReSharper 将帮助您生成一个无参数的简单 公有 void Dispose 方法 实现,其中 释放资源 会被调用以处理选定的可释放成员。

  • 如果您的类仅拥有非托管资源,ReSharper 将额外生成析构函数和一个 释放非托管资源 方法,您可以在其中编写清理代码。

  • 如果您的类拥有或可能通过继承拥有托管和非托管资源,ReSharper 将额外创建一个可被继承者重写的 释放资源(bool disposing) 方法。

要配置如何实现可释放模式,请在 生成 对话框中使用 选项

在下面的示例中,此命令用于为托管的 日志记录器资源 字段生成可释放模式,并使用单个 选项 为这些字段生成空值检查。

生成前

生成后

class MyClass { private Logger logger; private IDisposable resource; }
class MyClass : IDisposable { private Logger logger; private IDisposable resource; public void Dispose() { logger?.Dispose(); resource?.Dispose(); } }

生成一个 Dispose 模式

  1. 在编辑器中,将插入点放在类型名称处或类型内您希望插入 Dispose 模式的行上。 如果插入符号位于类型名称上,生成的代码将添加到类型声明的开头。

  2. Alt+Insert 或从主菜单中选择 ReSharper | 编辑| 生成代码…。 或者,您可以按 Control+Shift+A ,在弹出窗口中开始输入命令名称,然后在那里选择它。

  3. 生成 弹出窗口中,选择 释放模式

  4. 在出现的 生成 对话框中,您将看到可分配给 IDisposable 接口 类型的私有属性和字段列表。 选择这些类型成员中的某些或全部,ReSharper 将在当前类型中生成包装器,将执行委托给选定的类型成员。

    使用 ReSharper 生成 Dispose 模式

    可选地,在对话框中使用以下控件:

    • 字段可以为 null — 如果您的类型中有任何可为空的字段或属性,则会显示。 默认情况下,此复选框是选中的,这意味着 ReSharper 将为选定的字段生成空值检查。 如果您不需要空值检查,可以取消选中此复选框。

    • 我有非托管资源 — 如果选中此复选框,ReSharper 将额外生成析构函数和一个 释放非托管资源 方法,您可以在其中编写清理代码。

    • 我打算继承这个类 — 如果选中此复选框,ReSharper 将额外创建一个可被继承者重写的 释放资源(bool disposing) 方法。

    • Dispose 已存在 — 如果 释放资源 的实现已存在,则会显示,并允许您选择是否:

      • 替换已存在的方法。

      • 将新生成的方法与现有方法并排放置。

      • 完全跳过生成新方法。

    • 析构函数已存在 — 如果您选择了 我有非托管资源 选项,并且类已经有一个析构函数,则会显示。 使用此选择器选择是否:

      • 替换已存在的方法。

      • 将新生成的方法与现有方法并排放置。

      • 完全跳过生成新方法。

  5. 单击 完成 完成向导。

    您还可以单击 选项 ,在 ReSharper 选项的 代码编辑 | 成员生成 页面上查看或修改通用代码生成首选项。

如果 IDisposable 接口 未实现,此操作也可作为 快速修复 使用。

一个帮助生成 Dispose 模式的快速修复

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

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

此功能在 C# 中可用

此功能在 Visual Basic 中可用

功能在 C++ 中不可用

此功能在 ASP.NET 中不可用

此功能在 Razor 中不可用

此功能在 XAML 中不可用

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

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

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

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

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