JetBrains Rider 2025.2 Help

生成处置模式

JetBrains Rider 帮助您根据类所拥有的资源类型,自动生成各种 IDisposable 的实现:

  • 如果您的类仅拥有托管的 IDisposable 资源,JetBrains Rider 将帮助您生成一个无参数的简单 public void Dispose() 实现,其中会对选定的可释放成员调用 释放()

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

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

要配置 Dispose 模式的实现方式,请在 生成 对话框中使用 选项

在下面的示例中,此命令用于为托管的 记录器资源 字段生成一个 Dispose 模式,并通过单个 选项 为这些字段生成空值检查。

生成前

生成后

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 或从主菜单中选择 代码|生成...。 或者,您可以按 Ctrl+Shift+A ,在弹出窗口中开始输入命令名称,然后在那里选择它。

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

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

    使用 JetBrains Rider 生成 Dispose 模式

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

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

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

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

    • 释放方法已存在 — 如果 释放() 的实现已存在,则会显示此选项,并允许您选择:

      • 如果方法已存在,则替换该方法。

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

      • 完全跳过生成新方法。

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

      • 如果方法已存在,则替换该方法。

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

      • 完全跳过生成新方法。

  5. 点击 确定 以完成向导。

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

一个帮助生成 Dispose 模式的快速修复
最后修改日期: 2025年 9月 26日