Deveel.Data.Serialization.BinarySerializer.SerializeValue C# (CSharp) Method

SerializeValue() private static method

private static SerializeValue ( BinaryWriter writer, Encoding encoding, Type type, object value ) : void
writer BinaryWriter
encoding Encoding
type Type
value object
return void
		private static void SerializeValue(BinaryWriter writer, Encoding encoding, Type type, object value) {
			var typeCode = GetTypeCode(type);
			if (typeCode == null)
				throw new NotSupportedException(String.Format("The type '{0}' is not supported.", type));

			WriteValueHead(writer, typeCode.Value, type, value);

			if (value == null)
				return;

			if (typeCode == ArrayType) {
				var array = (Array) value;
				var arrayLength = array.Length;
				var arrayType = type.GetElementType();

				for (int i = 0; i < arrayLength; i++) {
					var element = array.GetValue(i);
					SerializeValue(writer, encoding, arrayType, element);
				}
			} else if (typeCode == ObjectType) {
				var serializer = new BinarySerializer {Encoding = encoding};
				serializer.Serialize(writer, value);
			} else if (typeCode == BooleanType) {
				writer.Write((bool) value);
			} else if (typeCode == ByteType) {
				writer.Write((byte) value);
			} else if (typeCode == Int16Type) {
				writer.Write((short) value);
			} else if (typeCode == Int32Type) {
				writer.Write((int) value);
			} else if (typeCode == Int64Type) {
				writer.Write((long) value);
			} else if (typeCode == SingleType) {
				writer.Write((float) value);
			} else if (typeCode == DoubleType) {
				writer.Write((double) value);
			} else if (typeCode == StringType) {
				writer.Write((string) value);
			}
		}
	}