Ну отливка из myObjectк byte[]никогда не будет работать , если вы не получили явное преобразование или , если myObject этоbyte[] . Вам нужна сериализация рамка какого - то. Их много, в том числе Protocol Buffers, который мне близок и дорог. Он довольно «скудный и скупой» как с точки зрения пространства, так и времени.
Однако вы обнаружите, что почти все фреймворки сериализации имеют значительные ограничения на то, что вы можете сериализовать - буферы протоколов больше, чем некоторые, из-за кросс-платформенности.
Если вы можете указать больше требований, мы сможем помочь вам больше - но это никогда не будет так просто, как кастинг ...
РЕДАКТИРОВАТЬ: просто чтобы ответить на это:
Мне нужен мой двоичный файл, чтобы содержать байты объекта. Только байты, никаких метаданных. Упакованный объект-объект. Поэтому я буду реализовывать настраиваемую сериализацию.
Помните, что байты в ваших объектах довольно часто являются ссылками ... поэтому вам нужно решить, что с ними делать.
Я подозреваю, что вы обнаружите, что разработать и реализовать собственную структуру сериализации сложнее, чем вы думаете.
Я бы лично порекомендовал, если вам нужно сделать это только для нескольких конкретных типов, вы не пытаетесь придумать общую структуру сериализации. Просто реализуйте метод экземпляра и статический метод для всех необходимых вам типов:
public void WriteTo(Stream stream)
public static WhateverType ReadFrom(Stream stream)
Следует помнить об одном: все становится сложнее, если у вас есть наследство. Без наследования, если вы знаете, с какого типа вы начинаете, вам не нужно включать какую-либо информацию о типе. Конечно, существует также вопрос управления версиями - нужно ли вам беспокоиться об обратной и прямой совместимости с различными версиями ваших типов?