live-forum/server/webapi/LiveForum/LiveForum.Code/Base/BaseResponse.cs
2026-03-24 11:27:37 +08:00

117 lines
2.6 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System.Runtime.Serialization;
namespace LiveForum.Code.Base
{
/// <summary>
/// 接口和服务调用基础响应类
/// </summary>
/// <typeparam name="T"></typeparam>
[DataContract]
[Serializable]
public record BaseResponse<T>
{
/// <summary>
/// 功能执行返回代码
/// </summary>
[DataMember]
public ResponseCode Code { get; set; }
/// <summary>
/// 消息
/// </summary>
[DataMember]
public string Message { get; set; }
/// <summary>
/// 数据
/// </summary>
[DataMember]
public T? Data { get; set; }
/// <summary>
/// 构造函数
/// </summary>
public BaseResponse()
{
Code = 0;
Message = "";
}
/// <summary>
/// 构造函数
/// </summary>
public BaseResponse(T? data = default(T))
{
Code = ResponseCode.Success;
Data = data;
}
/// <summary>
/// 构造函数
/// </summary>
public BaseResponse(string message, T? data = default(T))
{
Code = ResponseCode.Success;
Message = message;
Data = data;
}
/// <summary>
/// 构造函数
/// </summary>
public BaseResponse(ResponseCode code, string message = "", T? data = default(T))
{
Code = code;
Message = message;
Data = data;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
return JsonConvert.SerializeObject(this, settings);
}
}
/// <summary>
/// 返回值是bool类型的响应类
/// </summary>
public record BaseResponseBool : BaseResponse<bool>
{
}
public record BaseResponseLong : BaseResponse<long>
{
}
public record BaseResponseInt : BaseResponse<int>
{
}
public record BaseResponseList<T> : BaseResponse<List<T>>
{
public BaseResponseList() { }
public BaseResponseList(List<T> data) : base(data) { }
public BaseResponseList(string message, List<T> data) : base(message, data) { }
public BaseResponseList(ResponseCode code, string message = "", List<T> data = null) : base(code, message, data) { }
}
}