生成处置模式
ReSharper 帮助您根据类所拥有的资源类型自动生成各种 IDisposable 的实现:
如果您的类仅拥有托管的
IDisposable资源,ReSharper 将帮助您生成一个无参数的简单public void Dispose()实现,其中Dispose()会被调用以处理选定的可释放成员。如果您的类仅拥有非托管资源,ReSharper 将额外生成析构函数和一个
ReleaseUnmanagedResources方法,您可以在其中编写清理代码。如果您的类拥有或可能通过继承拥有托管和非托管资源,ReSharper 将额外创建一个可被继承者重写的
Dispose(bool disposing)方法。
要配置如何实现可释放模式,请在 生成 对话框中使用 选项。
在下面的示例中,此命令用于为托管的 logger 和 resource 字段生成可释放模式,并使用单个 选项 为这些字段生成空值检查。
生成前 | 生成后 |
|---|---|
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 模式
在编辑器中,将插入点放在类型名称处或类型内您希望插入 Dispose 模式的行上。 如果插入点位于类型名称处,则生成的代码将添加到类型声明的开头。
按 Alt+Insert 或从主菜单中选择 。 或者,您可以按 Control+Shift+A ,开始在弹窗中输入命令名称,然后从中选择它。
在 生成 弹出窗口中,选择 释放模式。
在出现的 生成 对话框中,您将看到可分配给
IDisposable类型的私有属性和字段列表。 选择其中的一些或全部类型成员,ReSharper 将在当前类型中生成包装器,将执行委托给选定的类型成员。
可选地,在对话框中使用以下控件:
字段可以为 null — 如果您的类型中有任何可为空的字段或属性,则会显示。 默认情况下,此复选框已选中,这意味着 ReSharper 将为选定的字段生成空值检查。 如果您不需要空值检查,可以清除此复选框。
我有非托管资源 — 如果选中此复选框,ReSharper 将额外生成析构函数和一个
ReleaseUnmanagedResources方法,您可以在其中编写清理代码。我打算继承这个类 — 如果选中此复选框,ReSharper 将额外创建一个可被继承者重写的
Dispose(bool disposing)方法。Dispose 已存在 — 如果
Dispose()的实现已存在,则会出现,并允许您选择是否:替换已存在的方法。
将新生成的方法与现有方法并排放置。
完全跳过生成新方法。
析构函数已存在 — 如果您选择了 我有非托管资源 选项,并且类已经有一个析构函数,则会显示。 使用此选择器选择是否:
替换已存在的方法。
将新生成的方法与现有方法并排放置。
完全跳过生成新方法。
单击 完成 以完成向导。
您还可以单击 选项 在 ReSharper 选项的 页面上查看或修改通用代码生成偏好。
如果 IDisposable 未实现,此操作也可作为 快速修复 使用。

此功能在以下语言和技术中是 支持的:
此处提供的说明和示例介绍了在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相关主题。