我現在正在重構其他人編寫的代碼,並且我找到了一個我對此有複雜感受的構造。有一個類似ListView的控件及其中的每個項目都可以引發'DialogOpened'事件。但是,向每個項目註冊外部事件處理程序可能會很麻煩(並且可能會動態添加或刪除項目!)。出於這個原因,在類似ListView的控件中有一個事件,它被命名爲「ItemDialogOpened」。這聽起來對我來說都合理,但有兩個問題:事件重定向是C#中的一個好習慣嗎?如果屬實,誰應該是'發件人'?
- 沒有在ListView般的控制提高單個事件的方法「OnItemDialogOpened」,但這種方法不直接調用。相反,它被註冊爲每個項目的「DialogOpened」事件的事件處理程序。那可以嗎?我在問,因爲我在MSDN中找不到類似的東西。
- 如果這樣的事件重定向是好的,那麼誰應該是最終單一事件的發件人?現在,我正在使用的代碼是原始發件人 - 該項目。但是,我認爲(但我不確定),現在發送者應該改爲類似ListView的控件。我對嗎?