public byte[] Serialize <T>(T obj)
        {
            Type type = typeof(T);

            if (type.IsValueType)
            {
                return((byte[])m_fSerializeStruct.Invoke(this, new object[] { obj }));
            }
            else if (type.IsClass)
            {
                CustomRawBinarySerializer custom = obj as CustomRawBinarySerializer;
#if NET5_0
                if (custom is not null)
#else
                if (custom != null)
#endif
                {
                    return(SerializeCustom(custom));
                }
            }
            return(DefaultSerializer?.Serialize(obj) ?? throw new ArgumentException($"Can\'t serialize \'obj\' of type \'{type.FullName}\'"));
        }
 private byte[] SerializeCustom(CustomRawBinarySerializer obj)
 {
     return(obj.Serialize());
 }