0
我有兩個事件處理程序具有完全相同的代碼,但處理不同的事件除外。我怎樣才能將這些結合起來使用相同的代碼而不必重複自己?將兩種方法重構爲一個具有相同字段但名稱不同的方法
static void SharePointEventHandler(object sender, SharePointEventArgs e)
{
switch (e.ExceptionType)
{
case SharePointEventArgs.ExceptionLevel.Debug:
CLog(LogType.Debug, e.Message);
break;
case SharePointEventArgs.ExceptionLevel.Info:
CLog(LogType.Info, e.Message);
break;
case SharePointEventArgs.ExceptionLevel.Error:
CLog(LogType.Error, e.Message, e.Exception);
break;
}
}
static void FTPEventHandler(object sender, FTPEventArgs e)
{
switch (e.ExceptionType)
{
case FTPEventArgs.ExceptionLevel.Debug:
CLog(LogType.Debug, e.Message);
break;
case FTPEventArgs.ExceptionLevel.Info:
CLog(LogType.Info, e.Message);
break;
case FTPEventArgs.ExceptionLevel.Error:
CLog(LogType.Error, e.Message, e.Exception);
break;
}
}
那些自定義事件參數類型?你能改變事件簽名嗎? – BradleyDotNET 2014-12-03 01:00:42
正如Bradley所問,'SharePointEventArgs'和'FTPEventArgs'之間有什麼關係。有什麼關係嗎?這裏最大的問題是方法體實際上是不相同的。每個使用看起來是'EventArgs'子類特有的'enum'。如果這兩個值以某種方式共享(例如,'enum'被聲明在'EventArgs'子類之外),會更容易。 – 2014-12-03 01:05:31
沒有兩個eventArg類型之間的關係,直接的方法是使用共享邏輯創建第三個方法,並且兩個現有方法都有一個調用它的單獨一行。但這不是您要求的一種方法解決方案。 – hatchet 2014-12-03 01:10:38