最佳实践:在 Component 中覆盖 OnDispose(bool disposing) 方法 vs 使用 Disposed 事件

5
在.Net中,Component类公开了一个Disposed事件。它还提供了一个受保护的成员OnDispose(bool disposing)
对于扩展Component的自定义组件,最佳实践是什么?重写OnDispose(bool)还是在构造时附加一个事件处理程序到Disposed
我的感觉是应该重写OnDispose(bool)并密封该类。
您有何想法?
3个回答

6
通常,事件被消费者用于在事件发生时得到通知。如果您正在扩展Type并且需要清理资源,则应重写Dispose(bool disposing)。
Spence在事件处理程序方面是部分正确的,可以分配多个事件,但问题在于无法保证处理事件的顺序。
密封类的使用通常取决于您正在设计的内容。
FxCop规则也提供了一些有用的信息:http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

2

我建议重写行为,因为你的组件实现者可以访问事件处理程序,因此可能会意外注销你的清理实现。我认为,根据你的自定义组件所做的事情,你可能还需要这样做,因为如果你有状态对象或外部接口等,你可能需要在调用基本清理程序之前运行清理任务。


1

据我所知,这是一个 .Net 标准,继承者需要重写基类的 OnXxxxx 方法,用户则处理 Xxxxx 事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接