RpcNotification.cs 925 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace InABox.Rpc
  8. {
  9. public class RpcPush : ISerializeBinary
  10. {
  11. public Type Type { get; set; }
  12. public BaseObject Object { get; set; }
  13. public void SerializeBinary(CoreBinaryWriter writer)
  14. {
  15. writer.Write(Type.EntityName());
  16. writer.WriteObject(Object, Type);
  17. }
  18. public void DeserializeBinary(CoreBinaryReader reader)
  19. {
  20. Type = CoreUtils.GetEntity(reader.ReadString());
  21. Object = reader.ReadObject<BaseObject>(Type);
  22. }
  23. public static RpcPush Create<TPush>(TPush push)
  24. where TPush : BaseObject
  25. {
  26. return new RpcPush
  27. {
  28. Type = typeof(TPush),
  29. Object = push
  30. };
  31. }
  32. }
  33. }