private static void ReadValue(ref CsfValue csfValue, BinaryReader binary)
        {
            var valueLength = binary.ReadInt32();
            var value       = Encoding.Unicode.GetString(Decoding(binary.ReadBytes(valueLength << 1), valueLength << 1));

            csfValue.Value = value;
        }
        public static CsfValue Serialize(BinaryReader binaryReader)
        {
            var result = new CsfValue();
            var flag   = binaryReader.ReadInt32();

            // 判断是否包含额外内容
            switch (flag)
            {
            case STR_RAW:
                ReadValue(ref result, binaryReader);
                break;

            case WSTR_RAW:
                ReadValue(ref result, binaryReader);
                result.Extra = Encoding.ASCII.GetString(binaryReader.ReadBytes(binaryReader.ReadInt32()));
                break;

            default:
                throw new FormatException();
            }
            return(result);
        }