示例#1
0
        public override void WriteTypeData(ObjectWriter ow, BinaryWriter writer, bool writeTypes)
        {
            writer.Write(members.Length);

            // Names of fields
            foreach (FieldInfo field in members)
            {
                writer.Write(field.Name);
            }

            if (writeTypes)
            {
                // Types of fields
                foreach (FieldInfo field in members)
                {
                    ObjectWriter.WriteTypeCode(writer, field.FieldType);
                }

                // Type specs of fields
                foreach (FieldInfo field in members)
                {
                    ow.WriteTypeSpec(writer, field.FieldType);
                }
            }
        }
 public override void WriteTypeData(ObjectWriter ow, BinaryWriter writer, bool writeTypes)
 {
     writer.Write(this.types.Length);
     foreach (string value in this.names)
     {
         writer.Write(value);
     }
     foreach (Type type in this.types)
     {
         ObjectWriter.WriteTypeCode(writer, type);
     }
     foreach (Type type2 in this.types)
     {
         ow.WriteTypeSpec(writer, type2);
     }
 }
 public override void WriteTypeData(ObjectWriter ow, BinaryWriter writer, bool writeTypes)
 {
     writer.Write(this.members.Length);
     foreach (FieldInfo fieldInfo in this.members)
     {
         writer.Write(fieldInfo.Name);
     }
     if (writeTypes)
     {
         foreach (FieldInfo fieldInfo2 in this.members)
         {
             ObjectWriter.WriteTypeCode(writer, fieldInfo2.FieldType);
         }
         foreach (FieldInfo fieldInfo3 in this.members)
         {
             ow.WriteTypeSpec(writer, fieldInfo3.FieldType);
         }
     }
 }
示例#4
0
        private void WriteGenericArray(BinaryWriter writer, long id, Array array)
        {
            Type elementType = array.GetType().GetElementType();

            if (!elementType.IsArray)
            {
                this.WriteAssembly(writer, elementType.Assembly);
            }
            writer.Write(7);
            writer.Write((int)id);
            if (elementType.IsArray)
            {
                writer.Write(1);
            }
            else if (array.Rank == 1)
            {
                writer.Write(0);
            }
            else
            {
                writer.Write(2);
            }
            writer.Write(array.Rank);
            for (int i = 0; i < array.Rank; i++)
            {
                writer.Write(array.GetUpperBound(i) + 1);
            }
            ObjectWriter.WriteTypeCode(writer, elementType);
            this.WriteTypeSpec(writer, elementType);
            if (array.Rank == 1 && !elementType.IsValueType)
            {
                this.WriteSingleDimensionArrayElements(writer, array, elementType);
            }
            else
            {
                foreach (object val in array)
                {
                    this.WriteValue(writer, elementType, val);
                }
            }
        }
示例#5
0
        public override void WriteTypeData(ObjectWriter ow, BinaryWriter writer, bool writeTypes)
        {
            writer.Write(types.Length);

            // Names of fields
            foreach (string name in names)
            {
                writer.Write(name);
            }

            // Types of fields
            foreach (Type type in types)
            {
                ObjectWriter.WriteTypeCode(writer, type);
            }

            // Type specs of fields
            foreach (Type type in types)
            {
                ow.WriteTypeSpec(writer, type);
            }
        }