public void Write(BinaryFormatterWriter output) { Debug.Assert(_name != null && _memberNames != null && _binaryTypeEnumA != null && _typeInformationA != null && _memberAssemIds != null); output.WriteByte((byte)_binaryHeaderEnum); output.WriteInt32(_objectId); output.WriteString(_name); output.WriteInt32(_numMembers); for (int i = 0; i < _numMembers; i++) { output.WriteString(_memberNames[i]); } for (int i = 0; i < _numMembers; i++) { output.WriteByte((byte)_binaryTypeEnumA[i]); } for (int i = 0; i < _numMembers; i++) { BinaryTypeConverter.WriteTypeInfo(_binaryTypeEnumA[i], _typeInformationA[i], _memberAssemIds[i], output); } if (_assemId > 0) { output.WriteInt32(_assemId); } }
// Writes the type information on the wire internal static void WriteTypeInfo(BinaryTypeEnum binaryTypeEnum, object typeInformation, int assemId, BinaryFormatterWriter output) { switch (binaryTypeEnum) { case BinaryTypeEnum.Primitive: case BinaryTypeEnum.PrimitiveArray: Debug.Assert(typeInformation != null, "[BinaryConverter.WriteTypeInfo]typeInformation!=null"); output.WriteByte((byte)((InternalPrimitiveTypeE)typeInformation)); break; case BinaryTypeEnum.String: case BinaryTypeEnum.Object: case BinaryTypeEnum.StringArray: case BinaryTypeEnum.ObjectArray: break; case BinaryTypeEnum.ObjectUrt: Debug.Assert(typeInformation != null, "[BinaryConverter.WriteTypeInfo]typeInformation!=null"); output.WriteString(typeInformation.ToString()); break; case BinaryTypeEnum.ObjectUser: Debug.Assert(typeInformation != null, "[BinaryConverter.WriteTypeInfo]typeInformation!=null"); output.WriteString(typeInformation.ToString()); output.WriteInt32(assemId); break; default: throw new SerializationException(SR.Format(SR.Serialization_TypeWrite, binaryTypeEnum.ToString())); } }
public void Write(BinaryFormatterWriter output) { output.WriteByte((byte)BinaryHeaderEnum.Assembly); output.WriteInt32(_assemId); Debug.Assert(_assemblyString != null); output.WriteString(_assemblyString); }
public void Write(BinaryFormatterWriter output) { Debug.Assert(_name != null && _memberNames != null); output.WriteByte((byte)_binaryHeaderEnum); output.WriteInt32(_objectId); output.WriteString(_name); output.WriteInt32(_numMembers); for (int i = 0; i < _numMembers; i++) { output.WriteString(_memberNames[i]); } if (_assemId > 0) { output.WriteInt32(_assemId); } }