.net 当抛出ObjectDisposedException时,应该传递什么作为objectName?

.net 当抛出ObjectDisposedException时,应该传递什么作为objectName?,.net,idisposable,objectdisposedexception,.net,Idisposable,Objectdisposedexception,在实现IDisposable时,我理解在对象被释放后不应该调用的每个方法都应该抛出ObjectDisposedException。但是,应该传递给异常构造函数的name对象的标准是什么呢?我认为没有标准,我将返回对象的类型以及唯一标识字段的字符串内容(排序的“主键”)。我认为推荐的做法是抛出以下内容: throw new ObjectDisposedException(GetType().FullName); [C#] private void CheckDisposed() { th

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

我认为没有标准,我将返回对象的类型以及唯一标识字段的字符串内容(排序的“主键”)。

我认为推荐的做法是抛出以下内容:

throw new ObjectDisposedException(GetType().FullName);
[C#]
private void CheckDisposed()
{
    throw new ObjectDisposedException(GetType().FullName);
}
或者包括检查,这两行代码位于每个需要它的方法的顶部(显然不是
Dispose
方法本身):


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

即使是.NET框架本身在这里也不是很一致

David M.Kean(微软FxCop团队的前开发人员)对以下内容发表了评论:

此类型的典型用法如下所示:

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

另外,请看这个问题和我的回答,了解一般的指导原则:我错过了。Mut也要学习阅读文档中的注释。@JonathonReinhart:注释显然已从.NET 4版本的页面中删除。我修复了上面的链接,因此它引用了包含引用评论的.NET3.5版本。