抛出ObjectDisposedException时应该作为objectName传递什么?

时间:2009-12-26 22:07:43

标签: .net idisposable objectdisposedexception

在实现IDisposable时,我认为在对象被处置后不应该调用的每个方法都应抛出ObjectDisposedException。但是应该传递给异常构造函数的name对象的标准是什么?

3 个答案:

答案 0 :(得分:44)

我认为建议的做法是抛出以下内容:

throw new ObjectDisposedException(GetType().FullName);

或者包括检查,这两行代码位于每个需要它的方法的顶部(显然不是Dispose方法本身):

if (this.disposed)
    throw new ObjectDisposedException(GetType().FullName);

甚至可能有助于将其重构为一种可用的小方法。

答案 1 :(得分:12)

即使是.NET Framework本身也不是很一致。

David M. Kean(微软FxCop团队的前开发人员)在MSDN documentation for the ObjectDisposedException添加了评论:

  

此类型的典型用法如下:

[C#]
private void CheckDisposed()
{
    throw new ObjectDisposedException(GetType().FullName);
}

答案 2 :(得分:1)

我不相信有一个标准,我会返回对象的类型以及唯一标识字段的字符串内容(各种“主键”)。