代码之家  ›  专栏  ›  技术社区  ›  Reed Copsey

在IDisposable类层次结构中正确处理ObjectDisposedException[关闭]

  •  12
  • Reed Copsey  · 技术社区  · 17 年前

    private bool disposed; Dispose() , Dispose(bool) ObjectDisposedException

    这对一个班级来说效果很好。然而,当你从可支配资源中进行子类化,并且子类包含自己的原生资源和独特的方法时,事情会变得有点棘手。大多数示例都显示了如何覆盖 Dipose(bool disposing) ObjectDisposedException .



    第二:

    当投掷 ,你用什么作为name参数?我知道“典型”的方法调用是:

    throw new ObjectDisposedException(GetType().FullName);
    

    有一条评论 on this page

    3 回复  |  直到 17 年前
        1
  •  5
  •   Pang Ajmal PraveeN    5 年前

    假定 实现派生类的人确切地知道何时可以调用某个方法,该方法的成功执行可能取决于对象是否已被处理(尽管理想情况下无论如何都应该通过XML注释记录)。

    GetType().FullName

    总之:与所有指导方针一样,如何实现某个设计功能显然取决于你,除非你有特别好的理由,否则最好还是坚持下去。在这两种情况下,使用你在帖子中建议的一些替代方案可能不会造成太大伤害,只要它们被一致使用,最好记录给用户。

        2
  •  2
  •   Jason Kresowaty    17 年前

    当您无法修改基类时,这是一个实用的解决方案。

    不是。您引用的示例代码使用了“GetType().FullName”。这始终是派生最多的类型的名称,而不是实现特定方法的类型。

        3
  •  0
  •   supercat    15 年前

    推荐文章