我有两个静态方法,我想用于错误处理.其中一个传递异常对象,另一个只是在需要报告错误时使用,该错误是基于文本的消息(字符串errorMessage).
除了如何构建消息并将其发送到日志文件之外,两种方法中的代码几乎相同.我怎样才能重构这个以便我不重复代码?
public static void ReportError(Exception exceptionRaised, string reference, string customMessage, bool sendEmail)
{
    // get filename
    // check if logfile exists, blah, blah
    // build up message from exception, reference & custom message using string builder
    // save message
    // email error (if set)
}
public static void ReportError(string errorMessage, string reference, bool sendEmail)
{
    // get filename
    // check if logfile exists, blah, blah
    // build up message from errorMessage & reference string builder
    // save message
    // email error (if set)
}
谢谢.
看到你所做的一切都是在第一种方法中构建自定义消息,改变你的第一种方法,通过纯文本错误消息方法传递自定义异常:
public static void ReportError(Exception exceptionRaised, string reference, 
    string customMessage, bool sendEmail)
{
    string errorMessage = BuildMessage(exceptionRaised, customMessage);
    ReportError(errorMessage, reference, sendEmail);
}
免责声明:不完全确定这是否有效.这取决于您如何构建错误消息.
编辑:
或者你可以添加第三个重载:
private static void ReportError(string completeException, bool sendEmail)
{
     // Do what needs to be done.
}
然后你的方法可以只建立异常消息并将该字符串和sendEmail布尔值传递给第三个重载.
你能用更少的参数调用带有更多的参数,传入null或""作为自定义消息吗?    
public static void ReportError(string errorMessage,
                               string reference,
                               bool sendEmail)
{
    ReportError(errorMessage, reference, null, sendEmail);
}
请注意,如果您使用的是C#4,则可以使用可选参数在不重载的情况下执行此操作.