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

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