Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. using UnityEngine;
  2. using Omanju.Byteproc;
  3. using Omanju.Byteproc.Processors;
  4.  
  5. public class BaseClass {
  6. public int num;
  7.  
  8. public BaseClass(int num) {
  9. this.num = num;
  10. }
  11.  
  12. public override string ToString() {
  13. return string.Format("num = {0}", num);
  14. }
  15.  
  16. public static readonly IValueProcessor<BaseClass> processor = ClassConverterBuilder.Create(() => new BaseClass(0))
  17. .AddInt(o => o.num, (o,v) => o.num = v)
  18. .ToProcessor();
  19.  
  20. public static readonly IConverter<BaseClass> converter = new Converter<BaseClass>(
  21. new PolymorphicProcessor<BaseClass>(ByteOrderType.LittleEndian)
  22. .Add(0, processor)
  23. .Add(1, SubClass.processor)
  24. );
  25. }
  26.  
  27. public class SubClass : BaseClass {
  28. public string str;
  29.  
  30. public SubClass(int num, string str) : base(num) {
  31. this.str = str;
  32. }
  33.  
  34. public override string ToString() {
  35. return string.Format("num = {0}, str = {1}", num, str);
  36. }
  37.  
  38. new public static readonly IValueProcessor<SubClass> processor = ClassConverterBuilder.Create(() => new SubClass(0, null))
  39. .AddInt(o => o.num, (o,v) => o.num = v)
  40. .AddString(o => o.str, (o,v) => o.str = v)
  41. .ToProcessor();
  42. }
  43.  
  44. public class Sample03 : MonoBehaviour {
  45. void Start () {
  46. BaseClass b = new BaseClass(123);
  47. byte[] bytes_base = BaseClass.converter.Serialize(b);
  48.  
  49. BaseClass s1 = new SubClass(456, "ABC");
  50. byte[] bytes_sub = BaseClass.converter.Serialize(s1);
  51.  
  52. BaseClass res1 = BaseClass.converter.Deserialize(bytes_base);
  53. BaseClass res2 = BaseClass.converter.Deserialize(bytes_sub);
  54.  
  55. Debug.LogFormat("1: type = {0}, {1}", res1.GetType().Name, res1.ToString());
  56. Debug.LogFormat("2: type = {0}, {1}", res2.GetType().Name, res2.ToString());
  57. }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement