OperationResult.cs 3.5 KB
using System;
using System.ComponentModel;
using System.Security.Authentication;

namespace Quiz.Models
{
    /// <summary>
    /// 业务操作结果信息类,对操作结果进行封装
    /// </summary>
    public class OperationResult : OperationResult<object>
    {
        #region 构造函数

        /// <summary>
        /// 初始化一个<see cref="OperationResult"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status)
            : this(status, null, null)
        { }

        /// <summary>
        /// 初始化一个<see cref="OperationResult"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status, object message)
            : this(status, message, null)
        { }

        /// <summary>
        /// 初始化一个<see cref="OperationResult"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status, object message, object data)
            : base(status, message, data)
        { }

        #endregion
    }


    /// <summary>
    /// 泛型版本的业务操作结果信息类,对操作结果进行封装
    /// </summary>
    /// <typeparam name="T">返回数据的类型</typeparam>
    public class OperationResult<T>
    {
        /// <summary>
        /// 初始化一个<see cref="OperationResult{T}"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status)
            : this(status, null, default(T))
        { }

        /// <summary>
        /// 初始化一个<see cref="OperationResult{T}"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status, object message)
            : this(status, message, default(T))
        { }

        /// <summary>
        /// 初始化一个<see cref="OperationResult{T}"/>类型的新实例
        /// </summary>
        public OperationResult(OperationResultType status, object message, T data)
        {
            Status = status;
            Message = message;
            Data = data;
        }

        /// <summary>
        /// 获取或设置 操作结果类型
        /// </summary>
        public OperationResultType Status { get; set; }

        /// <summary>
        /// 获取或设置 操作返回消息
        /// </summary>
        public object Message { get; set; }

        /// <summary>
        /// 获取或设置 操作返回数据
        /// </summary>
        public T Data { get; set; }
    }

    /// <summary>
    /// 表示业务操作结果的枚举
    /// </summary>
    public enum OperationResultType
    {
        /// <summary>
        /// 操作引发错误,引发<see cref="Exception"/>异常
        /// </summary>
        [Description("操作引发错误。")]
        Error = 0,
        /// <summary>
        /// 操作成功
        /// </summary>
        [Description("操作成功。")]
        Success = 1,
        /// <summary>
        /// 无效操作,引发<see cref="InvalidOperationException"/>异常
        /// </summary>
        [Description("无效操作。")]
        InvalidOperation = 2,
        /// <summary>
        /// 输入信息验证失败,引发<see cref="ArgumentException"/>, <see cref="FormatException"/>异常
        /// </summary>
        [Description("输入信息验证失败。")]
        ValidError = 3,
        /// <summary>
        /// 无效认证,引发<see cref="AuthenticationException"/>异常
        /// </summary>
        [Description("无效认证。")]
        InvalidAuthorize = 4,
    }
}