在实现 IDisposable 时,我理解在对象被释放后不应该调用的每个方法都应该抛出ObjectDisposedException
. 但是应该传递给异常构造函数的名称对象的标准是什么?
问问题
4839 次
3 回答
52
我相信推荐的做法是抛出以下内容:
throw new ObjectDisposedException(GetType().FullName);
或者包括检查,需要它的每个方法顶部的这两行代码(显然不是Dispose
方法本身):
if (this.disposed)
throw new ObjectDisposedException(GetType().FullName);
甚至可能有助于将其重构为一种用于可用性的微小方法。
于 2009-12-26T22:25:58.983 回答
14
甚至 .NET Framework 本身在这里也不是很一致。
David M. Kean(Microsoft FxCop 团队的前开发人员)在MSDN 文档中为 ObjectDisposedException添加了评论:
这种类型的典型用法如下所示:
[C#] private void CheckDisposed() { throw new ObjectDisposedException(GetType().FullName); }
于 2009-12-26T22:26:57.673 回答
1
我不相信有一个标准,我会返回对象的类型以及唯一标识字段的字符串内容(排序的“主键”)。
于 2009-12-26T22:12:23.087 回答