public virtual void encodeDotNetObject(object value)
{
if (value == null || System.DBNull.Value.Equals(value))
{
encodeNull();
}
else if (value is string)
{
encodeString((string)value);
}
else if (value is char)
{
encodeString(new string((char)value, 1));
}
else if (value is int)
{
encodeInt((int)value);
}
else if (value is long)
{
encodeLong((long)value);
}
else if (value is decimal)
{
encodeBigDecimal((decimal)value);
}
else if (value is bool)
{
encodeBoolean((bool)value);
}
else if (value is byte)
{
encodeInt((byte)value);
}
else if (value is short)
{
encodeInt((short)value);
}
else if (value is float)
{
encodeDouble((float)value);
}
else if (value is double)
{
encodeDouble((double)value);
}
else if (value is byte[])
{
encodeBytes((byte[])value);
}
else if (value is DateTime)
{
if (((DateTime)value).TimeOfDay.TotalSeconds == 0)
encodeDate((DateTime)value);
else
encodeTimestamp((DateTime)value);
}
else if (value is TimeSpan)
{
encodeTime((TimeSpan)value);
}
else if (value is Guid)
{
encodeGuid((Guid)value);
}
else if (value is IDataRecord[])
{
encodeArray((IDataRecord[])value);
}
else if (value is DataTable)
{
encodeArray((DataTable)value);
}
else
{
System.Diagnostics.Trace.WriteLine(String.Format("Unsupported type of parameter: {0}, sending as a plain string", value.GetType().Name));
encodeString(value.ToString());
}
}