Konwertuj tablicę różnych typów wartości na tablicę bajtów

Oto, co do tej pory wymyśliłem, ale nie wydaje się to optymalne, żadne pomysły na lepsze podejścia?

public void ToBytes(object[] data, byte[] buffer)
{
    byte[] obytes;
    int offset = 0;

    foreach (object obj in data)
    {
        if (obj is string)
            obytes = System.Text.Encoding.UTF8.GetBytes(((string)obj));
        else if (obj is bool)
            obytes = BitConverter.GetBytes((bool)obj);
        else if (obj is char)
            obytes = BitConverter.GetBytes((char)obj);
        // And so on for each valuetype

        Buffer.BlockCopy(obytes, 0, buffer, offset, obytes.Length);
        offset += obytes.Length;
    }
}

questionAnswers(3)

yourAnswerToTheQuestion