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