У меня есть вопрос, на который я подозреваю, что ответ немного сложен. В данный момент я программирую DLL (библиотеку классов) на C #. Эта DLL использует стороннюю библиотеку и поэтому имеет дело со сторонними объектами, исходный код которых у меня отсутствует. Теперь я планирую создать еще одну DLL, которая будет использоваться на более позднем стадионе в моем приложении. Эта вторая DLL должна использовать сторонние объекты (с соответствующими состояниями объектов), созданные первой DLL.
К счастью, сторонние объекты расширяют класс MarshalByRefObject
. Я могу упорядочить объекты с помощью System.Runtime.Remoting.Marshal(...)
. Затем я сериализую объекты, используя BinaryFormatter
, и сохраняю объекты как массив byte[]
. Все хорошо. Я могу десериализовать и демаршалировать противоположным образом и в итоге получить мои исходные сторонние объекты ... так кажется ...
Тем не менее, при вызове методов на моих сторонних десериализованных объектах я получаю внутренние исключения объекта. Обычно эти методы возвращают другие сторонние объекты, но (очевидно - я думаю) теперь эти объекты отсутствуют, потому что они не были сериализованы.
Теперь мой глобальный вопрос: как мне выполнить маршалинг / сериализацию всех объектов, на которые ссылаются мои сторонние объекты ... и каскадировать вниз по «ссылочному дереву», чтобы получить полный и законченный сериализованный объект? Сейчас я предполагаю выполнить предварительную обработку: получить все объекты, создать свой собственный объект и сериализовать его. Но я надеюсь, что есть другой выход ...