using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Transactions; namespace FreeSql.Site.UI.Common { public class AutoException { /// /// 执行方法外壳,包括异常抓取,固定格式返回 /// /// /// /// /// public static ServiceResult Excute( Action> action, bool isTransaction = false) { TransactionScope ts = null; if (isTransaction) ts = new TransactionScope(); ServiceResult result = new ServiceResult() { Status = EnumServiceResult.Success.GetHashCode() }; try { action.Invoke(result); if (isTransaction) ts.Complete(); } catch (Exception ex) { result.Msg = ex.Message; result.Status = EnumServiceResult.Failure.GetHashCode(); } finally { if (isTransaction) ts.Dispose(); } return result; } /// /// 规范接口调用方法 /// /// 返回值参数 /// 执行方法内容 /// 是否启用事务 /// public static ServiceResult Execute(Action action, bool isTransaction = false) { TransactionScope ts = null; if (isTransaction) ts = new TransactionScope(); ServiceResult result = new ServiceResult() { Status = EnumServiceResult.Success.GetHashCode(), Msg = "保存成功" }; try { action.Invoke(result); if (result.Status == EnumServiceResult.Success.GetHashCode()) { if (isTransaction) ts.Complete(); } } catch (Exception ex) { result.Msg = ex.Message; result.Status = EnumServiceResult.Failure.GetHashCode(); } finally { if (isTransaction) ts.Dispose(); } return result; } } }