Eh bien un casting de myObjectpour byte[]ne va jamais au travail à moins que vous avez une conversion explicite ou si myObject est un byte[]. Vous avez besoin d'un cadre de sérialisation quelconque . Il y en a beaucoup là-bas, y compris les tampons de protocole qui me sont chers. C'est assez «mince et méchant» en termes d'espace et de temps.
Vous constaterez que presque tous les frameworks de sérialisation ont des restrictions importantes sur ce que vous pouvez sérialiser, cependant - les tampons de protocole plus que certains, en raison du fait qu'ils sont multiplateformes.
Si vous pouvez donner plus d'exigences, nous pouvons vous aider davantage - mais ce ne sera jamais aussi simple que de lancer ...
EDIT: Juste pour répondre à ceci:
J'ai besoin de mon fichier binaire pour contenir les octets de l'objet. Seuls les octets, pas de métadonnées du tout. Objet à objet emballé. Je vais donc implémenter la sérialisation personnalisée.
Veuillez garder à l'esprit que les octets de vos objets sont assez souvent des références ... vous devrez donc déterminer quoi faire avec eux.
Je soupçonne que vous constaterez que la conception et la mise en œuvre de votre propre cadre de sérialisation personnalisé sont plus difficiles que vous ne l'imaginez.
Je recommanderais personnellement que si vous ne devez le faire que pour quelques types spécifiques, vous ne vous souciez pas d'essayer de créer un cadre de sérialisation général. Implémentez simplement une méthode d'instance et une méthode statique dans tous les types dont vous avez besoin:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
Une chose à garder à l'esprit: tout devient plus délicat si l'héritage est impliqué. Sans héritage, si vous savez par quel type vous commencez, vous n'avez pas besoin d'inclure d'informations de type. Bien sûr, il y a aussi la question du versionnage - avez-vous besoin de vous soucier de la compatibilité ascendante et descendante avec différentes versions de vos types?