2009-01-19 61 views
5

在.Net中,Component類公開Disposed事件。它還提供了一個受保護的成員OnDispose(bool disposing)最佳實踐:覆蓋組件上的OnDispose(布爾處置)與處置事件

延伸Component的自定義組件的最佳做法是什麼?覆蓋OnDispose(bool)或附加一個事件處理程序Disposed在施工?

我的感覺是,應該覆蓋OnDispose(bool)並封印課程。

想法?

回答

6

典型事件由消費者使用,以便在事件發生時通知他們。如果你正在擴展類型並且需要清理資源,你應該重寫Dispose(bool disposing)

Spence對於事件處理程序是部分正確的,可以分配多個事件,但問題是你無法保證事件處理的順序。

封閉課程通常取決於您設計的內容。

的FxCop的規則也有一些好消息:http://msdn.microsoft.com/en-us/library/ms244737(VS.80).aspx

+0

FxCop規則鏈接+1 – 2009-01-19 02:46:59

2

我建議重寫行爲,因爲組件的實現者可以訪問事件處理程序,因此可能會意外地取消註冊處理程序實現。我相信你也可能需要這樣做,這取決於你的自定義組件在做什麼,因爲如果你有狀態對象或外部接口等,你可能需要在調用基本垃圾處理器之前運行處理任務。

1

當我聽說過這件事情它是一個.NET標準,傳承覆蓋基類OnXxxxx方法和用戶處理爲Xxxxx事件。