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