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); }