我正在用C++創建一個C++/CLI類庫,並且作爲該庫的一部分,我提供了一個定製版本System.Windows.Forms.Form
和System.Windows.Forms.Control
,分別爲System.Windows.Forms.HAForm
和System.Windows.Forms.HAControl
。我希望覆蓋OnPaint
的方式允許我在任何繪畫完成之前每次都需要處理某些東西,並且在繪製完成後處理一些事情時,我可以使用OnPaint_Pre
,OnPaint_Post
和OnPaint
。Pre_和Post_ Events
儘管這一點很簡單,但由於這是要繼承的庫中的一個類,我不想在我的類中簡單創建OnPaint
,因爲這將被最終開發人員OnPaint
覆蓋,並且即使他們確實打電話給base.OnPaint
,這些事件也會被無序觸發。即OnPaint_Pre,我的OnPaint
,OnPaint_Post
,子類OnPaint
。
我將如何創建一個類插入兩個事件,一個在現有事件之前,一個之後?
這很簡單,重寫OnPaint :)不,用虛擬方法的問題是,一個不知情的客戶端程序員總是會讓你失望。除非你在你的方法上使用* sealed *關鍵字,否則他們不能。 –