我在我的應用程序冒泡事件,因此使用泡沫事件方法。由於此方法處理各種冒泡事件,因此它們是一個開關或其中的語句,以確定我們正在處理的事件。我想知道是否可以通過創建不同版本的事件參數類來解決這個問題。因此,讓我解釋一下,假設我有兩種類型的事件,它們的處理方式分別稱爲X和Y,我爲這兩個事件創建新的事件參數類,因爲它們存儲不同類型的信息。鑄造和類型問題
public class EventsArgsX : EventsArgs
public class EventsArgsY : EventsArgs
然後當我從什麼地方在我的應用RaiseBubbleEvent我可以通過其中兩個事件ARG基於類型的,所以..
EventArgsX foox = new EventArgsX();
RaiseBubbleEvent(null,foox);
或
EventArgsY fooy = new EventArgsY();
RaiseBubbleEvent(null,fooy);
那麼OnBubbleEvent方法拿起這個,誰的簽名是 重寫OnBubbleEvent(object source,EventArgs e)
現在我不能重載此方法,因爲它被覆蓋的擺在首位,所以我想我能做的只是與它的過載的另一種方法來處理這個問題,所以
protected override OnBubbleEvent(object source, EventArgs e)
{
DoStuff(e);
}
private void DoStuff(EventArgsY args)
{}
private void DoStuff(EventArgsX args)
{}
但當然,問題是, OnBubbleEvent方法中的EventArgs e在調用時是EventArgs類型的。但是我們知道它不是。那麼爲什麼我會回到它的實際類型以便方法調用工作?
非常感謝,希望你能幫助我這個,它看起來真的很容易喜歡一個可能失去了一些東西,或者它只是不能做
任何想法?
我想我還沒有弄明白。爲什麼你不能寫兩個OnBubbleEvent方法?你可以覆蓋重寫的方法?! – Thorsten79 2010-01-22 11:32:38