Dobrze odlew z myObjectaby byte[]nigdy nie będzie działać, chyba że masz wyraźne konwersję lub jeśli myObject jestbyte[] . Musisz ram serializacji jakiegoś rodzaju. Jest ich wiele, w tym bufory protokołów, które są mi bliskie i drogie. Jest dość „chudy i wredny” zarówno pod względem przestrzeni, jak i czasu.
Przekonasz się, że prawie wszystkie struktury serializacji mają znaczące ograniczenia dotyczące tego, co można serializować - więcej niż niektóre bufory protokołów, ponieważ są wieloplatformowe.
Jeśli możesz podać więcej wymagań, możemy Ci pomóc - ale nigdy nie będzie to tak proste, jak rzucanie ...
EDYCJA: Wystarczy odpowiedzieć na to:
Potrzebuję, aby mój plik binarny zawierał bajty obiektu. Tylko bajty, żadnych metadanych. Upakowany obiekt-obiekt. Więc zaimplementuję niestandardową serializację.
Pamiętaj, że bajty w twoich obiektach są dość często odwołaniami ... więc musisz dowiedzieć się, co z nimi zrobić.
Podejrzewam, że projektowanie i wdrażanie własnej niestandardowej platformy serializacji jest trudniejsze niż sobie wyobrażasz.
Osobiście poleciłbym, jeśli potrzebujesz to zrobić tylko dla kilku określonych typów, nie zawracaj sobie głowy próbą wymyślenia ogólnej struktury serializacji. Po prostu zaimplementuj metodę instancji i metodę statyczną we wszystkich potrzebnych typach:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
Należy pamiętać o jednej rzeczy: wszystko staje się trudniejsze, jeśli w grę wchodzi dziedziczenie. Bez dziedziczenia, jeśli wiesz, od jakiego typu zaczynasz, nie musisz uwzględniać żadnych informacji o typie. Oczywiście jest też kwestia wersjonowania - czy musisz się martwić o wsteczną i przyszłą kompatybilność z różnymi wersjami twoich typów?