public virtual ExceptionModel Convert(Exception exception) { ExceptionModel model = null; TypeSwitch.On(exception) .Case<ArgumentException>(ex => model = new ArgumentExceptionModel { ParamName = ex.ParamName, }) .Case<NotSupportedException>(ex => model = new NotSupportedExceptionModel()) .Case<InvalidOperationException>(ex => model = new InvalidOperationExceptionModel()) .Case<HttpStatusException>(ex => model = new HttpStatusExceptionModel { InnerException = Convert(ex.InnerException), StatusCode = ex.StatusCode }) .Default(() => model = new ExceptionModel { Message = string.Format("[No exception serializer found for {0}].{1}", exception.GetType(), Environment.NewLine) }); model.Message = exception.Message; model.StackTrace = exception.StackTrace; return model; }
public virtual Exception Convert(ExceptionModel model) { Exception exception = null; TypeSwitch.On(model) .Case<ArgumentNullExceptionModel>(m => exception = new ArgumentNullException(m.ParamName, m.Message)) .Case<ArgumentExceptionModel>(m => exception = new ArgumentException(m.ParamName, m.Message)) .Case<InvalidOperationExceptionModel>(m => exception = new InvalidOperationException(m.Message)) .Case<NotSupportedExceptionModel>(m => exception = new NotSupportedException(m.Message)) .Case<HttpStatusExceptionModel>(m => exception = Convert(m.InnerException)) .Default(m => exception = new Exception(m.Message)); return exception; }