private void write(VO entity)
    {
        Type type = entity.GetType();

        FieldInfo[] fields = type.GetFields();
        foreach (FieldInfo fieldInfo in fields)
        {
            if (!fieldInfo.IsPublic)
            {
                continue;
            }
            bool   primitive = fieldInfo.FieldType.IsPrimitive;
            string varName   = fieldInfo.Name;
            string typeName  = fieldInfo.FieldType.Name;

            if (fieldInfo.FieldType.IsPrimitive)              //int float double long
            {
                writePrimitive(entity, varName, typeName);
                continue;
            }


            //非基本类型: string  object  array
            if (typeName == "String")            //字符串
            {
                writeString(entity.getVarValue <string> (varName), entity.getVarId(varName));
                continue;
            }
            //集合类
            if (typeName == "ArrayList")
            {
                writeArray(entity.getVarValue <ArrayList> (varName), entity.getVarId(varName));
            }

            if (typeName == "VO")
            {
                writeObject(entity.getVarValue <VO> (varName), entity.getVarId(varName), true);
            }
            else
            {
                //通过BaseType来找
                typeName = fieldInfo.FieldType.BaseType.Name;
                if (typeName == "VO")
                {
                    writeObject(entity.getVarValue <VO> (varName), entity.getVarId(varName), true);
                }
            }
            Console.WriteLine(varName + "  " + typeName + "  " + (primitive ? "true" :"false"));
        }
    }
    /**
     * 基本数据类型  int float double long
     * @param varName
     * @param typeName
     * */
    private void writePrimitive(VO entity, string varName, string typeName)
    {
        byte identity = entity.getVarId(varName);

        if (typeName == "Int32")
        {
            int value = entity.getVarValue <int> (varName);
            if (value == 0)
            {
                return;
            }
            //			writeInt (entity.getVarValue<int> (varName), entity.getVarId (varName));
            if (value >= 0)
            {
                if (value < 256)
                {
                    writeUInt8(value, identity);
                }
                else if (value < 65536)
                {
                    writeUInt16(value, identity);
                }
                else
                {
                    writeInt(value, identity);
                }
            }
            else
            {
                if (value >= -32768)
                {
                    writeInt16(value, identity);
                }
                else
                {
                    writeInt(value, identity);
                }
            }
        }
        else if (typeName == "Double")
        {
            double value = entity.getVarValue <double> (varName);
            if (value == 0)
            {
                return;
            }
            writeDouble(value, identity);
        }
        else if (typeName == "Boolean")
        {
            bool value = entity.getVarValue <bool> (varName);
            writeBoolean(value, identity);
        }
        else if (typeName == "UInt16")
        {
            ushort value = entity.getVarValue <ushort> (varName);
            if (value == 0)
            {
                return;
            }
            writeUInt16(value, identity);
        }
        else if (typeName == "Int16")
        {
            short value = entity.getVarValue <short> (varName);
            if (value == 0)
            {
                return;
            }
            writeInt16(value, identity);
        }
        else if (typeName == "UInt32")
        {
            uint value = entity.getVarValue <uint> (varName);
            if (value == 0)
            {
                return;
            }
            writeUInt(value, identity);
        }
        else if (typeName == "Long")
        {
            long value = entity.getVarValue <long> (varName);
            if (value == 0)
            {
                return;
            }
            writeLong(value, identity);
        }
        else if (typeName == "Int64")
        {
            long value = entity.getVarValue <long> (varName);
            if (value == 0)
            {
                return;
            }
            writeLong(value, identity);
        }
        else if (typeName == "Float")
        {
            float value = entity.getVarValue <float>(varName);
            if (value == 0)
            {
                return;
            }
            writeFloat(value, identity);
        }
    }