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