AMessage.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using MongoDB.Bson.Serialization.Attributes;
  2. using ProtoBuf;
  3. // 不要在这个文件加[ProtoInclude]跟[BsonKnowType]标签,加到InnerMessage.cs或者OuterMessage.cs里面去
  4. namespace Model
  5. {
  6. [ProtoContract]
  7. [ProtoInclude(Opcode.AActorMessage, typeof(AActorMessage))]
  8. [ProtoInclude(Opcode.ARequest, typeof(ARequest))]
  9. [ProtoInclude(Opcode.AResponse, typeof(AResponse))]
  10. [BsonKnownTypes(typeof(AActorMessage))]
  11. [BsonKnownTypes(typeof(ARequest))]
  12. [BsonKnownTypes(typeof(AResponse))]
  13. public abstract partial class AMessage
  14. {
  15. public override string ToString()
  16. {
  17. return MongoHelper.ToJson(this);
  18. }
  19. }
  20. [ProtoContract]
  21. [ProtoInclude(Opcode.AActorRequest, typeof(AActorRequest))]
  22. [BsonKnownTypes(typeof(AActorRequest))]
  23. public abstract partial class ARequest : AMessage
  24. {
  25. [ProtoMember(1)]
  26. [BsonIgnoreIfDefault]
  27. public uint RpcId;
  28. }
  29. /// <summary>
  30. /// 服务端回的RPC消息需要继承这个抽象类
  31. /// </summary>
  32. [ProtoContract]
  33. [ProtoInclude(Opcode.AActorResponse, typeof(AActorResponse))]
  34. [BsonKnownTypes(typeof(AActorResponse))]
  35. [BsonKnownTypes(typeof(ErrorResponse))]
  36. public abstract partial class AResponse : AMessage
  37. {
  38. [ProtoMember(1)]
  39. public uint RpcId;
  40. [ProtoMember(2)]
  41. public int Error = 0;
  42. [ProtoMember(3)]
  43. public string Message = "";
  44. }
  45. [ProtoContract]
  46. public class ErrorResponse: AResponse
  47. {
  48. }
  49. }