using System; namespace XP.Hardware.Detector.Abstractions { /// /// 探测器操作结果封装 | Detector operation result wrapper /// 统一封装成功/失败状态、数据和错误信息 /// public class DetectorResult { /// /// 操作是否成功 | Whether the operation succeeded /// public bool IsSuccess { get; } /// /// 错误消息 | Error message /// public string ErrorMessage { get; } /// /// 异常对象 | Exception object /// public Exception Exception { get; } /// /// 错误码 | Error code /// public int ErrorCode { get; } protected DetectorResult(bool isSuccess, string errorMessage = null, Exception exception = null, int errorCode = 0) { IsSuccess = isSuccess; ErrorMessage = errorMessage; Exception = exception; ErrorCode = errorCode; } /// /// 创建成功结果 | Create success result /// /// 成功消息 | Success message /// 成功结果 | Success result public static DetectorResult Success(string message = null) { return new DetectorResult(true, message); } /// /// 创建失败结果 | Create failure result /// /// 错误消息 | Error message /// 异常对象 | Exception object /// 错误码 | Error code /// 失败结果 | Failure result public static DetectorResult Failure(string errorMessage, Exception exception = null, int errorCode = -1) { return new DetectorResult(false, errorMessage, exception, errorCode); } } /// /// 带数据的探测器操作结果 | Detector operation result with data /// /// 数据类型 | Data type public class DetectorResult : DetectorResult { /// /// 结果数据 | Result data /// public T Data { get; } private DetectorResult(bool isSuccess, T data, string errorMessage = null, Exception exception = null, int errorCode = 0) : base(isSuccess, errorMessage, exception, errorCode) { Data = data; } /// /// 创建成功结果 | Create success result /// /// 结果数据 | Result data /// 成功消息 | Success message /// 成功结果 | Success result public static DetectorResult Success(T data, string message = null) { return new DetectorResult(true, data, message); } /// /// 创建失败结果 | Create failure result /// /// 错误消息 | Error message /// 异常对象 | Exception object /// 错误码 | Error code /// 失败结果 | Failure result public new static DetectorResult Failure(string errorMessage, Exception exception = null, int errorCode = -1) { return new DetectorResult(false, default(T), errorMessage, exception, errorCode); } } }