一、簡單訴求:
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 } }
打完收工!