Files
IM_NEW/IM.Commons/Result.cs
T
2026-05-09 17:06:30 +08:00

37 lines
1.7 KiB
C#

using System.Text.Json.Serialization;
namespace IM.Commons
{
public class Result<T>(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<T> Success(T? data = default) => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), data);
public static Result<T> Fail(ResultCode code) => new((int)code, code.GetDescription());
public static Result<T> Fail(ResultCode code, string errorMsg) => new((int)code, errorMsg);
public static Result<T> Fail<FuncT>(Result<FuncT> result) => new(result.Code, result.Message);
}
public class Result
{
public static Result<T> Success<T>(T? data = default) => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), data);
public static Result<object> Success() => new((int)ResultCode.SUCCESS, ResultCode.SUCCESS.GetDescription(), null);
public static Result<T> Fail<T>(ResultCode code) => new((int)code, code.GetDescription());
public static Result<object> Fail(ResultCode code) => new((int)code, code.GetDescription());
public static Result<T> Fail<T>(ResultCode code, string errorMsg) => new((int)code, errorMsg);
public static Result<T> Fail<T, FuncT>(Result<FuncT> result) => new(result.Code, result.Message);
public static Result<object> Fail<FuncT>(Result<FuncT> result) => new(result.Code, result.Message);
}
}