using System.Net;
using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
namespace XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
///
/// 客户端请求结果
///
///
public class ClientRequestResult : IRequestResult
{
/// 请求失败类别。
public ClientRequestFailureKind FailureKind { get; set; }
/// 请求失败异常;成功时为 null。
public Exception? Exception { get; set; }
///
public T? Result { get; set; }
///
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.OK;
///
public string Message { get; set; } = string.Empty;
///
object? IRequestResultBase.Result { get => Result; set => Result = value is not null ? (T)value : default; }
///
/// 转换为指定泛型
///
/// 指定泛型
///
public ClientRequestResult TryConvertTo() => new()
{
Message = Message,
StatusCode = StatusCode,
FailureKind = FailureKind,
Exception = Exception,
Result = Result is not null ? (TF)(object)Result : default
};
}
/// 客户端请求失败类别。
public enum ClientRequestFailureKind
{
None,
Cancelled,
Timeout,
Transport,
Protocol,
Serialization,
Application
}