/// <summary> /// Writes the value of the <paramref name="member"/> to the stream. /// </summary> /// <param name="member">Must not be null.</param> /// <param name="writer">Must not be null.</param> private void WritePropertyValue(ObjectMemberData member, FileChunkWriter writer) { var value = member.GetValue(Instance); var type = member.DataType; if (value != null) { switch (Type.GetTypeCode(type)) { case TypeCode.Byte: writer.WriteByte((byte)value); break; case TypeCode.Char: writer.WriteChar((char)value); break; case TypeCode.Int16: writer.WriteInt16((short)value); break; case TypeCode.Int32: writer.WriteInt32((int)value); break; case TypeCode.Int64: writer.WriteInt64((long)value); break; case TypeCode.String: writer.WriteString((string)value); break; case TypeCode.UInt16: writer.WriteUInt16((ushort)value); break; case TypeCode.UInt32: writer.WriteUInt32((uint)value); break; case TypeCode.UInt64: writer.WriteUInt64((ulong)value); break; case TypeCode.Object: WriteObjectValue(writer, value, type); break; default: throw new NotSupportedException(); } } }