簡體   English   中英

查找哪個事件被解雇了

[英]Find which Event was Fired

我試圖捕獲哪個事件被觸發。 我有兩個指向同一函數CurrentLoan_LogEntryEvent CurrentLoan_LogEntryEvent ,如何確定實際觸發了哪個事件: LogEntryAddedLogEntryChange

您可以在下面找到我的代碼示例。 如果您對我的代碼有任何疑問,請與我們聯系。

CurrentLoan是一個Loan對象,它有兩個事件。

public MyApplication()
{
    ThirdPartyDLL.LoanOpened += new EventHandler(CurrentLoanOpened);
}

private void CurrentLoanOpened(object sender, EventArgs e) 
{
    ThirdPartyDLL.CurrentLoan.LogEntryAdded += CurrentLoan_LogEntryEvent;
    ThirdPartyDLL.CurrentLoan.LogEntryChange += CurrentLoan_LogEntryEvent;
}

private void CurrentLoan_LogEntryEvent(object sender, LogEntryEventArgs e)
{
    // When LogEntry was Added or Changed.
    // How do I determine if LogEntryAdded or LogEntryChange was fired?
}

如果要區分兩個事件,則無法為多個事件附加單個方法。 給他們不同的處理程序。

當您不關心事件來源的位置時,通常會為多個事件附加單個處理程序,但您始終希望在處理程序中執行相同的操作。

如果你有一些常見的邏輯要執行,你可以在處理程序中調用它。

private void CurrentLoanOpened(object sender, EventArgs e) 
{
    ThirdPartyDLL.CurrentLoan.LogEntryAdded += CurrentLoan_LogEntryAdded;
    ThirdPartyDLL.CurrentLoan.LogEntryChange += CurrentLoan_LogEntryChange;
}

private void CurrentLoan_LogEntryAdded(object sender, LogEntryEventArgs e)
{
    //LogEntryAdded fired
    YourOptionalCommonMethodIfAny();
}

private void CurrentLoan_LogEntryChange(object sender, LogEntryEventArgs e)
{
    //LogEntryChange fired
    YourOptionalCommonMethodIfAny();
}

你為什么不這樣做:

private void CurrentLoanOpened(object sender, EventArgs e) 
{
    ThirdPartyDLL.CurrentLoan.LogEntryAdded += CurrentLoan_LogEntryAddedEvent;
    ThirdPartyDLL.CurrentLoan.LogEntryChange += CurrentLoan_LogEntryChangeEvent;
}

private void CurrentLoan_LogEntryAddedEvent(object sender, LogEntryEventArgs e)
{
    // First do what you must do specifically for added events
    CurrentLoan_LogEntry(e);
}


private void CurrentLoan_LogEntryChangeEvent(object sender, LogEntryEventArgs e)
{
    // First do what you must do specifically for changed events
    CurrentLoan_LogEntry(e);
}

將一個處理程序綁定到多個事件,然后確定在該處理程序中執行的操作只會使事情過於復雜。

始終保持代碼易於理解和更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM