public virtual ExceptionModel Convert(Exception exception) { ExceptionModel model = null; TypeSwitch.On(exception) .Case <HttpStatusException>(ex => { exception = ex.InnerException; model = Convert(exception); }) .Case <ArgumentException>(ex => model = new ArgumentExceptionModel { ParamName = ex.ParamName, }) .Case <NotSupportedException>(ex => model = new NotSupportedExceptionModel()) .Case <InvalidOperationException>(ex => model = new InvalidOperationExceptionModel()) .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 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; }