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