示例#1
0
 private void WriteValueBytes(Stream stream, object value, Type type)
 {
     if (type == typeof(byte))
     {
         stream.WriteByte((byte)value);
     }
     else if (type == typeof(bool))
     {
         var bytes = BitConverter.GetBytes((bool)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(short))
     {
         var bytes = BitConverter.GetBytes((short)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(int))
     {
         var bytes = BitConverter.GetBytes((int)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(long))
     {
         var bytes = BitConverter.GetBytes((long)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(ushort))
     {
         var bytes = BitConverter.GetBytes((ushort)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(uint))
     {
         var bytes = BitConverter.GetBytes((uint)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(ulong))
     {
         var bytes = BitConverter.GetBytes((ulong)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(double))
     {
         var bytes = BitConverter.GetBytes((double)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(decimal))
     {
         var bytes = TypesInfo.GetDecimalBytes((decimal)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(float))
     {
         var bytes = BitConverter.GetBytes((float)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(char))
     {
         var bytes = BitConverter.GetBytes((char)value);
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(Guid))
     {
         var bytes = ((Guid)value).ToByteArray();
         stream.Write(bytes, 0, bytes.Length);
     }
     else if (type == typeof(string))
     {
         WriteString(stream, (string)value);
     }
     else if (type == typeof(DateTime))
     {
         var dateTimeValue = ((DateTime)value);
         var kind          = dateTimeValue.Kind;
         stream.WriteByte((byte)kind);
         var dateTimeBytes = BitConverter.GetBytes(((DateTime)value).Ticks);
         stream.Write(dateTimeBytes, 0, dateTimeBytes.Length);
     }
     else if (type == typeof(DateTimeOffset))
     {
         var dateTimeOffsetValue = ((DateTimeOffset)value);
         var offsetBytes         = BitConverter.GetBytes(dateTimeOffsetValue.Offset.Ticks);
         stream.Write(offsetBytes, 0, offsetBytes.Length);
         var dateTimeAsLong = dateTimeOffsetValue.Ticks;
         var dateTimeBytes  = BitConverter.GetBytes(dateTimeAsLong);
         stream.Write(dateTimeBytes, 0, dateTimeBytes.Length);
     }
     else
     {
         throw new NotImplementedException("Only primitive types are supported");
     }
 }