RpcError.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace JsonRPC4.Common
  6. {
  7. public class RpcError
  8. {
  9. public int Code
  10. {
  11. get;
  12. }
  13. public string Message
  14. {
  15. get;
  16. }
  17. public object Data
  18. {
  19. get;
  20. }
  21. public Type DataType
  22. {
  23. get;
  24. }
  25. public RpcError(RpcErrorCode code, string message, object data = null)
  26. : this((int)code, message, data)
  27. {
  28. }
  29. public RpcError(int code, string message, object data = null)
  30. {
  31. if (string.IsNullOrWhiteSpace(message))
  32. {
  33. throw new ArgumentNullException("message");
  34. }
  35. Code = code;
  36. Message = message;
  37. Data = data;
  38. DataType = data?.GetType();
  39. }
  40. public RpcException CreateException()
  41. {
  42. return new RpcException(Code, Message, null, Data);
  43. }
  44. }
  45. public class RpcError<T> : RpcError
  46. {
  47. public new T Data => (T)base.Data;
  48. public RpcError(RpcErrorCode code, string message, T data)
  49. : base(code, message, data)
  50. {
  51. }
  52. public RpcError(int code, string message, T data)
  53. : base(code, message, data)
  54. {
  55. }
  56. }
  57. }