181 lines
4.8 KiB
C#
181 lines
4.8 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Model
|
||
{
|
||
public class Result
|
||
{
|
||
public Result()
|
||
{
|
||
|
||
}
|
||
private int _code;
|
||
private readonly string _msg;
|
||
|
||
/// <summary>
|
||
/// 结果是否成功
|
||
/// </summary>
|
||
public bool IsSuccess => _code == 0;
|
||
|
||
/// <summary>
|
||
/// 结果代码
|
||
/// </summary>
|
||
public int Code { set => _code = value; get => _code; }
|
||
|
||
/// <summary>
|
||
/// 结果消息
|
||
/// </summary>
|
||
public string Msg => _msg;
|
||
|
||
/// <summary>
|
||
/// 构造方法
|
||
/// </summary>
|
||
/// <param name="code"></param>
|
||
/// <param name="msg"></param>
|
||
/// <param name="exception"></param>
|
||
protected Result(int code, string msg, Exception? exception = null)
|
||
{
|
||
if (exception != null)
|
||
{
|
||
var listMoreMsg = new List<string>();
|
||
if (exception is ResultException resultException)
|
||
{
|
||
listMoreMsg.AddRange(resultException.MessageList);
|
||
}
|
||
//else if (exception is DeviceControlException deviceControlException)
|
||
//{
|
||
// listMoreMsg.Add(deviceControlException.ErrorInfo);
|
||
//}
|
||
else
|
||
{
|
||
listMoreMsg.Add(exception.Message);
|
||
}
|
||
var strMoreMsg = string.Join("、", listMoreMsg.Where(it => !string.IsNullOrWhiteSpace(it)));
|
||
if (!string.IsNullOrWhiteSpace(strMoreMsg))
|
||
{
|
||
msg += $"({strMoreMsg})";
|
||
}
|
||
}
|
||
_code = code;
|
||
_msg = msg;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回成功结果
|
||
/// </summary>
|
||
/// <param name="data"></param>
|
||
/// <returns></returns>
|
||
public static Result Success()
|
||
{
|
||
return new Result(0, "");
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回错误结果
|
||
/// </summary>
|
||
/// <param name="msg"></param>
|
||
/// <param name="exception"></param>
|
||
/// <returns></returns>
|
||
public static Result Error(string msg, Exception? exception = null)
|
||
{
|
||
return new Result(-1, msg, exception);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
public class Result<T> : Result
|
||
{
|
||
public Result()
|
||
{
|
||
|
||
}
|
||
private T? _data;
|
||
|
||
/// <summary>
|
||
/// 结果数据
|
||
/// </summary>
|
||
public T? Data { set => _data = value; get => _data; }
|
||
|
||
/// <summary>
|
||
/// 构造方法
|
||
/// </summary>
|
||
/// <param name="code"></param>
|
||
/// <param name="msg"></param>
|
||
/// <param name="data"></param>
|
||
/// <param name="exception"></param>
|
||
private Result(int code, string msg, T? data, Exception? exception = null) : base(code, msg, exception)
|
||
{
|
||
_data = data;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回成功数据
|
||
/// </summary>
|
||
/// <param name="data"></param>
|
||
/// <returns></returns>
|
||
public static Result<T> Success(T data)
|
||
{
|
||
return new Result<T>(0, "", data);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回失败信息
|
||
/// </summary>
|
||
/// <param name="msg"></param>
|
||
/// <param name="exception"></param>
|
||
/// <returns></returns>
|
||
public new static Result<T> Error(string msg, Exception? exception = null)
|
||
{
|
||
return new Result<T>(-1, msg, default, exception);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 返回失败信息和数据
|
||
/// </summary>
|
||
/// <param name="msg"></param>
|
||
/// <param name="data"></param>
|
||
/// <param name="exception"></param>
|
||
/// <returns></returns>
|
||
public static Result<T> Error(string msg, T data, Exception? exception = null)
|
||
{
|
||
return new Result<T>(-1, msg, data, exception);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
public class ResultException : Exception
|
||
{
|
||
private List<string>? _messageList;
|
||
|
||
public List<string> MessageList
|
||
{
|
||
get
|
||
{
|
||
List<string> messages = new();
|
||
if (_messageList != null)
|
||
{
|
||
messages.AddRange(_messageList.Where(it => !string.IsNullOrWhiteSpace(it)));
|
||
}
|
||
return messages;
|
||
}
|
||
}
|
||
|
||
public override string Message => string.Join(", ", MessageList);
|
||
|
||
public ResultException() : base(null)
|
||
{
|
||
}
|
||
|
||
public void AddAdditionMessage(string message)
|
||
{
|
||
_messageList ??= new();
|
||
_messageList.Add(message);
|
||
}
|
||
}
|
||
}
|