ResultMessage.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. namespace Vinno.IUS.Common.Network.Transfer
  3. {
  4. public class ResultMessage: DictionaryMessage, IEquatable<ResultMessage>
  5. {
  6. /// <summary>
  7. /// Gets the result code for the result.
  8. /// </summary>
  9. public int ResultCode { get; }
  10. public ResultMessage(int code) : base(SystemTags.Result)
  11. {
  12. ResultCode = code;
  13. AddMessage(SystemTags.ResultCode,new IntegerElement(ResultCode));
  14. }
  15. protected ResultMessage(Message message) : base(message)
  16. {
  17. ResultCode = GetElement<IntegerElement>(SystemTags.ResultCode).Value;
  18. }
  19. public static ResultMessage Convert(Message message)
  20. {
  21. try
  22. {
  23. if (message.Tag.Id != SystemTags.Result.Id)
  24. {
  25. return null;
  26. }
  27. return new ResultMessage(message);
  28. }
  29. catch (Exception)
  30. {
  31. //DoNothing.
  32. }
  33. return null;
  34. }
  35. public bool Equals(ResultMessage other)
  36. {
  37. if (ReferenceEquals(null, other)) return false;
  38. return ResultCode == other.ResultCode;
  39. }
  40. public override bool Equals(object obj)
  41. {
  42. if (ReferenceEquals(null, obj)) return false;
  43. if (ReferenceEquals(this, obj)) return true;
  44. if (!(obj is ResultMessage)) return false;
  45. return Equals((ResultMessage) obj);
  46. }
  47. public override int GetHashCode()
  48. {
  49. return ResultCode;
  50. }
  51. public static bool operator ==(ResultMessage left, ResultMessage right)
  52. {
  53. return Equals(left, right);
  54. }
  55. public static bool operator !=(ResultMessage left, ResultMessage right)
  56. {
  57. return !Equals(left, right);
  58. }
  59. }
  60. }