namespace Dpz.Core.Entity.Base;

public class ResponseResult
{
    /// <summary>
    /// 是否成功
    /// </summary>
    public bool Success { get; set; }

    /// <summary>
    /// 消息
    /// </summary>
    public string? Message { get; set; }

    /// <summary>
    /// 参数
    /// </summary>
    public object?[]? Arguments { get; set; }

    /// <summary>
    /// 状态码
    /// </summary>
    public int Code { get; set; }

    public static ResponseResult Ok() => new() { Success = true, Message = "操作成功" };

    public static ResponseResult Ok(string? message) => new() { Success = true, Message = message };

    public static ResponseResult Fail(string? message, int code = 1) =>
        new()
        {
            Success = false,
            Message = message,
            Code = code,
        };
}

public class ResponseResult<T> : ResponseResult
{
    public T? Data { get; set; }

    public ResponseResult<T> WithOk(T? data)
    {
        Data = data;
        Success = true;
        return this;
    }

    public ResponseResult<T> WithFail(string message, int code = 1)
    {
        Success = false;
        Message = message;
        Code = code;
        Data = default;
        return this;
    }

    public static ResponseResult<T> Ok(T? data) => new() { Success = true, Data = data };

    public static ResponseResult<T> Ok(T? data, string? message) =>
        new()
        {
            Success = true,
            Data = data,
            Message = message,
        };

    public static new ResponseResult<T> Fail(string? message, int code = 1) =>
        new()
        {
            Success = false,
            Message = message,
            Code = code,
        };
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个用于封装API响应结果的通用类库,位于 Dpz.Core.Entity.Base 命名空间下。它包含两个主要类:

1. ResponseResult 类(基础响应类)

属性说明:

  • Success: 布尔值,表示操作是否成功
  • Message: 可空字符串,存储响应消息(如成功提示或错误信息)
  • Arguments: 可空对象数组,用于存储额外的参数信息
  • Code: 整数,表示状态码(通常 0 表示成功,非 0 表示各种错误)

静态工厂方法:

// 创建成功响应,默认消息为"操作成功"
Ok()

// 创建成功响应,自定义消息
Ok(string? message)

// 创建失败响应,自定义消息和状态码(默认为1)
Fail(string? message, int code = 1)

2. ResponseResult<T> 类(泛型响应类)

继承自 ResponseResult,增加了数据承载能力。

额外属性:

  • Data: 泛型类型 T,用于携带具体的业务数据

实例方法(链式调用):

// 设置成功状态并返回数据
WithOk(T? data)

// 设置失败状态
WithFail(string message, int code = 1)

静态工厂方法:

// 创建成功响应并携带数据
Ok(T? data)

// 创建成功响应,携带数据和自定义消息
Ok(T? data, string? message)

// 创建失败响应(使用 new 关键字隐藏基类的 Fail 方法)
Fail(string? message, int code = 1)

使用场景示例

// 简单成功响应
return ResponseResult.Ok();

// 带数据的成功响应
return ResponseResult<User>.Ok(userObject, "用户创建成功");

// 失败响应
return ResponseResult.Fail("用户不存在", 404);

// 链式调用
return new ResponseResult<Order>().WithOk(orderData);

设计优点

  1. 统一的响应格式:规范化API返回结构
  2. 泛型支持:灵活承载不同类型的数据
  3. 链式调用:支持流畅的编程风格
  4. 工厂方法:简化对象创建过程
  5. 可扩展性:可通过继承扩展更多功能

这是一个典型的 Result Pattern(结果模式) 实现,常用于Web API开发中。

评论加载中...