对象,该对象调用Dispose上的方法

本文关键字:对象 方法 调用 Dispose | 更新日期: 2023-09-27 18:06:59

是否有一个。net类在它被处置时调用一个方法,有时而不是:

try
{
    ...
}
finally
{
    MyCleanupMethod()
}

我想:

using(new OnDisposed(MyCleanupMethod))
{
    ...
}

在我被斥责之前,有三个原因:

  • 对于长try块,它允许读取器在开始时看到需要清理的内容
  • try暗示它捕获了一个错误(它不是)
  • 保留处理代码private(如果IDisposable对象从类返回)

这是有效的做法吗?如果是这样,是一个。net类做这个吗?

对象,该对象调用Dispose上的方法

您可以添加一个构造函数来执行以下操作:

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...");
}