zoukankan      html  css  js  c++  java
  • C# 如何定义一个带泛型属性的返回类型类 ,用来做统一的后端数据返回格式

    一、简单诉求:

      1、请求成功、失败标识:Code

      2、请求结果说明:Message

      3、返回数据:Data

    二、简单诉求分析:

      1、诉求前两条没什么好说的

      2、针对诉求3,实际上需要根据不同的返回数据才能确定数据类型,因此我们想到采用泛型

    三、话不多说,直接上代码

    CommonServiceResponse.cs

    using System;
    
    namespace Awing.IBMS.MyServiceResponse
    {
        /// <summary>
        /// 数据类型转换  data.ToCommonServiceResponse("成功!")
        /// </summary>
        public static class CommonServiceResponseEX
        {
            public static CommonServiceResponse<T> ToCommonServiceResponse<T>(this T data,string message="") where T:class
            {
                return CommonServiceResponse<T>.Success(message, data);
            }
        }
        /// <summary>
        /// 返回类
        /// </summary>
        /// <typeparam name="T"></typeparam>
         public  class CommonServiceResponse<T> where  T :class
        {
            public MyResponseCode Code
            {
                get;
                set;
            }
            public string Message
            {
                get;
                set;
            }
    
            //返回数据
            public T Data
            {
                get;
                set;
            }
    
            /// <summary>
            /// 成功
            /// </summary>
            /// <param name="message"></param>
            /// <param name="data"></param>
            /// <returns></returns>
            public static CommonServiceResponse<T> Success(string message, T data)
            {
                return new CommonServiceResponse<T>
                {
                    Message = message,
                    Code = MyResponseCode.Success,
                    Data= data
                };
            }
    
            /// <summary>
            /// 失败
            /// </summary>
            /// <param name="code"></param>
            /// <param name="message"></param>
            /// <returns></returns>
            public static CommonServiceResponse<T> Fail( string message = "")
            {
                return new CommonServiceResponse<T>
                {
                    Message = message,
                    Code =MyResponseCode.Failed
                };
            }       
        }
    }

     然后发下自己想复杂了,实际我不需要在乎数据是什么类型的,他是什么类型我就返回什么类型即可,采用object和dynamic。

    using System;
    
    namespace Awing.IBMS.MyServiceResponse
    {
        /// <summary>
        /// 数据类型转换  data.ToCommonServiceResponse("成功!")
        /// </summary>
        public static class CommonServiceResponseEX
        {
            public static CommonServiceResponse ToCommonServiceResponse(this object data,string message="") 
            {
                return CommonServiceResponse.Success(message, data);
            }
        }
    
        /// <summary>
        /// 返回类
        /// </summary>
        public  class CommonServiceResponse 
        {
            public MyResponseCode Code
            {
                get;
                set;
            }
            public string Message
            {
                get;
                set;
            }
    
            //返回数据
            public dynamic Data
            {
                get;
                set;
            }
    
            /// <summary>
            /// 成功
            /// </summary>
            /// <param name="message"></param>
            /// <param name="data"></param>
            /// <returns></returns>
            public static CommonServiceResponse Success(string message, dynamic data=null)
            {
                return new CommonServiceResponse
                {
                    Message = message,
                    Code = MyResponseCode.Success,
                    Data= data
                };
            }
    
            /// <summary>
            /// 失败
            /// </summary>
            /// <param name="message"></param>
            /// <returns></returns>
            public static CommonServiceResponse Fail( string message = "")
            {
                return new CommonServiceResponse
                {
                    Message = message,
                    Code =MyResponseCode.Failed
                };
            }
            
        }
    }

    其中,MyServiceResponse.cs

    using System;namespace Awing.IBMS.MyServiceResponse
    {
        public enum MyResponseCode
        {
            Failed = 0,
            Success = 20000
        }
    }

    打完收工!

    斩后知
  • 相关阅读:
    map方法,以及filter方法的使用
    detach与remove区别,以及detach保留被删除的元素数据,使用
    jQuery 文档操作
    javascript 清空数组的方法
    jquery遍历数组的方式
    Oracle表空间不足处理
    css 文本超出2行就隐藏并且显示省略号
    Vim中的寄存器
    spacemacs怎样配置编辑器显示行号?
    Docker考前突击
  • 原文地址:https://www.cnblogs.com/dyhao/p/14349183.html
Copyright © 2011-2022 走看看