using System.Text.Json.Serialization; namespace IM.Commons { public class Result(int code, string message, T? data = default) { public int Code { get; private set; } = code; public string Message { get; private set; } = message; public T? Data { get; private set; } = data; [JsonIgnore] public bool Succeeded { get => Code == (int)ResultCode.SUCCESS; } public static Result Success(T? data = default) => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), data); public static Result Fail(ResultCode code) => new((int)code, code.GetDescription()); public static Result Fail(ResultCode code, string errorMsg) => new((int)code, errorMsg); public static Result Fail(Result result) => new(result.Code, result.Message); } public class Result { public static Result Success(T? data = default) => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), data); public static Result Success() => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), null); public static Result Fail(ResultCode code) => new((int)code, code.GetDescription()); public static Result Fail(ResultCode code) => new((int)code, code.GetDescription()); public static Result Fail(ResultCode code, string errorMsg) => new((int)code, errorMsg); public static Result Fail(Result result) => new(result.Code, result.Message); public static Result Fail(Result result) => new(result.Code, result.Message); } }