.net 最佳实践:覆盖组件上的OnDispose(bool disposing)和Disposed事件
在.Net中,.net 最佳实践:覆盖组件上的OnDispose(bool disposing)和Disposed事件,.net,components,idisposable,.net,Components,Idisposable,在.Net中,组件类公开了一个Disposed事件。它还提供一个受保护的成员OnDispose(bool disposing) 扩展组件的自定义组件的最佳实践是什么?在构造时重写OnDispose(bool)或将事件处理程序附加到Disposed 我的感觉是应该重写OnDispose(bool)并密封类 想法?我建议重写该行为,因为组件的实现者可以访问事件处理程序,因此可能会意外地取消disposer实现的注册。我认为,您可能还需要根据您的自定义组件正在执行的操作来执行此操作,因为如果您有有状态
组件
类公开了一个Disposed
事件。它还提供一个受保护的成员OnDispose(bool disposing)
扩展组件的自定义组件的最佳实践是什么?在构造时重写OnDispose(bool)
或将事件处理程序附加到Disposed
我的感觉是应该重写OnDispose(bool)
并密封类
想法?我建议重写该行为,因为组件的实现者可以访问事件处理程序,因此可能会意外地取消disposer实现的注册。我认为,您可能还需要根据您的自定义组件正在执行的操作来执行此操作,因为如果您有有状态对象或外部接口等,您可能需要在调用基本处理器之前运行处理任务。通常,消费者使用事件,以便在事件发生时通知他们。如果要扩展类型并需要清理资源,则应重写Dispose(bool disposing)
Spence在事件处理程序方面部分是正确的,可以分配多个事件,但问题是您不能保证事件处理的顺序
密封类通常取决于您的设计
FxCop规则也有一些很好的信息:正如我所听说的那样,它是一个.Net标准,继承者覆盖Xxxxx方法上的基类,用户处理Xxxxx事件