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