CSharp-Single-EFCore/Bunny.Dao/Result/Result.cs

228 lines
7.3 KiB
C#

using System.Net;
using Bunny.Dao.Result.Enum;
namespace Bunny.Dao.Result;
[Serializable]
public class Result<T>(HttpStatusCode code, T? data, string? message)
{
public Result(HttpStatusCode code, string? message) : this(code, default, message)
{
}
private Result(int code, T? data, string message) : this((HttpStatusCode)code, data, message)
{
}
/// <summary>
/// 返回码
/// </summary>
public HttpStatusCode Code { get; set; } = code;
/// <summary>
/// 返回说明
/// </summary>
public string? Message { get; set; } = message;
/// <summary>
/// 返回数据体 可为空
/// </summary>
public T? Data { get; set; } = data;
// 不再继承 IActionResult
// public Task ExecuteResultAsync(ActionContext context)
// {
// return new Task<Result<T>>(() => new Result<T>(code, data, message));
// }
/// <summary>
/// 操作成功
/// </summary>
public static Result<T> Success()
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Success;
return new Result<T>((HttpStatusCode)codeEnum, default, codeEnum.GetDescription());
}
/// <summary>
/// 返回成功对象消息
/// </summary>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(T data)
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Success;
return new Result<T>((HttpStatusCode)codeEnum, data, codeEnum.GetDescription());
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, string message)
{
return new Result<T>(code, default, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, T data)
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Success;
return new Result<T>(code, data, codeEnum.GetDescription());
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(string message, T data)
{
const HttpStatusCode codeEnum = (HttpStatusCode)ResultCodeEnum.Success;
return new Result<T>(codeEnum, data, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="codeEnum">code枚举类</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(ResultCodeEnum codeEnum, T data)
{
return new Result<T>((HttpStatusCode)codeEnum, data, codeEnum.GetDescription());
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Success(HttpStatusCode code, T data, string message)
{
return new Result<T>(code, data, message);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <returns>返回的数据内容</returns>
public static Result<T> Error()
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Error;
return new Result<T>((HttpStatusCode)codeEnum, default, codeEnum.GetDescription());
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="code">code状态码</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code)
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Error;
return new Result<T>(code, default, codeEnum.GetDescription());
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(T? data)
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Error;
return new Result<T>((HttpStatusCode)codeEnum, data, codeEnum.GetDescription());
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="codeEnum">code枚举类</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(ResultCodeEnum codeEnum)
{
return new Result<T>((HttpStatusCode)codeEnum, default, codeEnum.GetDescription());
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <param name="data">错误数据</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(int code, string message, T? data = default)
{
return new Result<T>(code, data, message);
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, string message)
{
return new Result<T>(code, default, message);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, T data)
{
const ResultCodeEnum codeEnum = ResultCodeEnum.Error;
return new Result<T>(code, data, codeEnum.GetDescription());
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(string message, T data)
{
const HttpStatusCode codeEnum = (HttpStatusCode)ResultCodeEnum.Error;
return new Result<T>(codeEnum, data, message);
}
/// <summary>
/// 返回错误对象
/// </summary>
/// <param name="codeEnum">code枚举类</param>
/// <param name="data">数据内容分</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(ResultCodeEnum codeEnum, T data)
{
return new Result<T>((HttpStatusCode)codeEnum, data, codeEnum.GetDescription());
}
/// <summary>
/// 自定义返回成功消息
/// </summary>
/// <param name="code">code状态码</param>
/// <param name="data">数据内容分</param>
/// <param name="message">消息内容</param>
/// <returns>返回的数据内容</returns>
public static Result<T> Error(HttpStatusCode code, T data, string message)
{
return new Result<T>(code, data, message);
}
}