public static T[] ReadArray <T>(byte[] fieldData, ref int cursor, T[] _)
        {
            bool isNull = BinarySerializer.ReadBoolean(fieldData, ref cursor);

            if (isNull)
            {
                return(null);
            }
            var          count = BinarySerializer.ReadInt32(fieldData, ref cursor);
            var          lst   = new T[count];
            FuncRead <T> Func  = GetReadFunc <T>();

            for (int i = 0; i < count; i++)
            {
                T val = Func(fieldData, ref cursor);
                lst[i] = val;
            }

            return(lst);
        }
        public static List <T> ReadList <T>(byte[] fieldData, ref int cursor, List <T> lst)
        {
            bool isNull = BinarySerializer.ReadBoolean(fieldData, ref cursor);

            if (isNull)
            {
                return(null);
            }
            if (lst == null)
            {
                lst = new List <T>();
            }
            var          count = BinarySerializer.ReadInt32(fieldData, ref cursor);
            FuncRead <T> Func  = GetReadFunc <T>();

            for (int i = 0; i < count; i++)
            {
                T val = Func(fieldData, ref cursor);
                lst.Add(val);
            }

            return(lst);
        }
 public FuncWrap(FuncRead <T> readFunc, FuncWrite <T> writeFunc)
 {
     this.readFunc  = readFunc;
     this.writeFunc = writeFunc;
 }
 static void RegisterReaderWriter <T>(FuncRead <T> readFunc, FuncWrite <T> writeFunc)
 {
     _WriteHelper <T> .Fun = writeFunc;
     _ReadHelper <T> .Fun  = readFunc;
     allSerializers.Add(typeof(T), new FuncWrap <T>(readFunc, writeFunc));
 }
 static void RegisterInnerReaderWriter <T>(FuncRead <T> readFunc, FuncWrite <T> writeFunc)
 {
     innerTypes.Add(typeof(T));
     RegisterReaderWriter(readFunc, writeFunc);
 }