Преобразовать любой объект в байт []

Я пишу прототип TCP-соединения, и у меня возникли некоторые проблемы с гомогенизацией данных, которые нужно отправить.

] На данный момент я не отправляю ничего, кроме строк, но в будущем мы хотим иметь возможность отправлять любой объект.

На данный момент код довольно прост, потому что я думал, что все можно преобразовать в байтовый массив:

void SendData(object headerObject, object bodyObject)
{
  byte[] header = (byte[])headerObject;  //strings at runtime, 
  byte[] body = (byte[])bodyObject;      //invalid cast exception

  // Unable to cast object of type 'System.String' to type 'System.Byte[]'.
  ...
}

Это, конечно, достаточно легко решить с помощью

if( state.headerObject is System.String ){...}

Проблема в том, что если я сделаю это таким образом, Мне нужно проверить КАЖДЫЙ тип объекта, который не может быть преобразован в byte [] во время выполнения.

Поскольку я не знаю каждый объект, который нельзя преобразовать в byte [] во время выполнения, это действительно не вариант.

Как вообще преобразовать любой объект в байтовый массив в C #. NET 4.0?

125
задан leppie 26 May 2015 в 06:21
поделиться