Bueno, un elenco de myObjecta byte[]nunca funcionará a menos que tengas una conversión explícita o si myObject es un byte[]. Necesita un marco de serialización de algún tipo. Hay muchos por ahí, incluidos los búferes de protocolo que son cercanos y queridos para mí. Es bastante "delgado y mezquino" en términos de espacio y tiempo.
Sin embargo, encontrará que casi todos los marcos de serialización tienen restricciones significativas sobre lo que puede serializar: búferes de protocolo más que algunos, debido a que son multiplataforma.
Si puede dar más requisitos, podemos ayudarlo más, pero nunca será tan simple como el casting ...
EDITAR: Solo para responder a esto:
Necesito que mi archivo binario contenga los bytes del objeto. Solo los bytes, sin metadatos de ningún tipo. Empaquetado de objeto a objeto. Así que implementaré la serialización personalizada.
Tenga en cuenta que los bytes de sus objetos suelen ser referencias ... por lo que deberá averiguar qué hacer con ellos.
Sospecho que encontrará que diseñar e implementar su propio marco de serialización personalizado es más difícil de lo que imagina.
Personalmente, recomendaría que si solo necesita hacer esto para algunos tipos específicos, no se moleste en intentar crear un marco de serialización general. Simplemente implemente un método de instancia y un método estático en todos los tipos que necesite:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
Una cosa a tener en cuenta: todo se vuelve más complicado si se trata de una herencia. Sin herencia, si sabe con qué tipo está comenzando, no necesita incluir ningún tipo de información. Por supuesto, también está la cuestión del control de versiones: ¿necesita preocuparse por la compatibilidad hacia atrás y hacia adelante con diferentes versiones de sus tipos?