是否有.NET类在处理时调用方法,有时代替:
try
{
...
}
finally
{
MyCleanupMethod()
}
我想:
using(new OnDisposed(MyCleanupMethod))
{
...
}
在我受到谴责之前,有三个原因:
try
块,它允许读者在开始时查看需要清理的内容try
有一个暗示是它发现错误(它不是)private
(如果从类中返回IDisposable
对象)这是有效的做法吗?如果是这样,.NET类是否可以执行此操作?
答案 0 :(得分:3)
您可以添加一个执行操作的构造函数:
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...");
}