对象,该对象调用Dispose上的方法
本文关键字:对象 方法 调用 Dispose | 更新日期: 2023-09-27 18:06:59
是否有一个。net类在它被处置时调用一个方法,有时而不是:
try
{
...
}
finally
{
MyCleanupMethod()
}
我想:
using(new OnDisposed(MyCleanupMethod))
{
...
}
在我被斥责之前,有三个原因:
- 对于长
try
块,它允许读取器在开始时看到需要清理的内容 -
try
暗示它捕获了一个错误(它不是) - 保留处理代码
private
(如果IDisposable
对象从类返回)
这是有效的做法吗?如果是这样,是一个。net类做这个吗?
您可以添加一个构造函数来执行以下操作:
public class OnDisposed : IDisposable
{
private readonly Action _disposeAction;
public OnDisposed(Action disposeAction)
{
_disposeAction = disposeAction;
}
public void Dispose()
{
// ...
if(_disposeAction != null)
_disposeAction();
}
}
例如:using (new OnDisposed(() => Console.WriteLine("Dispose Called")))
{
Console.WriteLine("In using...");
}