public static void WriteArray <T>(System.IO.BinaryWriter write, T[] lst)
        {
            bool isNull = lst == null;

            BinarySerializer.WriteBoolean(write, isNull);
            if (isNull)
            {
                return;
            }
            var count = lst.Length;

            BinarySerializer.WriteInt32(write, count);
            FuncWrite <T> Func = GetWriteFunc <T>();

            for (int i = 0; i < count; i++)
            {
                Func(write, lst[i]);
            }
        }
 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);
 }