помогите с сериализацией наследника MarshalByRefObject
От: DenIs_01  
Дата: 29.11.05 22:26
Оценка:
Здравствуйте.
Три дня бьюсь над проблемой...

надо сделать класс-наследник от MarshalByRefObject, чтобы его можно было
1) маршалить: RemotingServices.Marshall(obj);
2) потом отключить (RemotingServices.Disconnect)
3) потом сериализовать (BinaryFormatter.Serialize)
4) потом де-сериализовать (BinaryFormatter.Deserialize)
5) потом снова маршалить (RemotingServices.Marshall)

Затык происходит на пункте №3 ("The type System.Runtime.Remoting.ServerIdentity in Assembly mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 is not marked as serializable")
Решаем затык так: http://www.rsdn.ru/Forum/Message.aspx?mid=802102&only=1
Автор: Syffest
Дата: 09.09.04


далее доходим до пункта №5 и при вызове
RemotingServices.Marshall на десериализованный объект получаем "Object reference not set to an instance of an object"

Если из списка исключить пункт 1, то все нормально. Т.е. объект сериализуется и маршалится после десериализации.

ПОМОГИТЕ, ВСЮ ГОЛОВУ СВЕРНУЛ УЖЕ

реализовывать ISerializable — не вариант, т.к. потом будет много классов-наследников.
Чуствую, что надо как-то сделать SurrogateSelector, чтоб он выкидывал/восстанавливал что касается ремотинга, но каким образом?...
Вообще как сделать SurrogateSelector типа фильтра? т.е. чтоб я мог посмотреть все значения _до_ маршалинга и сравнить их со значениями _после_ дисконнекта (ну и вернуть их назад, самое главное)...
Re: помогите с сериализацией наследника MarshalByRefObject
От: ie Россия http://ziez.blogspot.com/
Дата: 30.11.05 04:28
Оценка:
Здравствуйте, DenIs_01, Вы писали:

DI_>далее доходим до пункта №5 и при вызове

DI_>RemotingServices.Marshall на десериализованный объект получаем "Object reference not set to an instance of an object"

А после десериализации объект точно не null, а то подозрительная какая-то ошибочка.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: помогите с сериализацией наследника MarshalByRefObjec
От: DenIs_01  
Дата: 30.11.05 13:53
Оценка:
Здравствуйте, ie, Вы писали:

ie>Здравствуйте, DenIs_01, Вы писали:


DI_>>далее доходим до пункта №5 и при вызове

DI_>>RemotingServices.Marshall на десериализованный объект получаем "Object reference not set to an instance of an object"

ie>А после десериализации объект точно не null, а то подозрительная какая-то ошибочка.


нет, все нормально. Более того: если объект до сериализации не маршалить, то все нормально (он без ошибок маршалится после сериализации). Если маршалить до сериализации (и потом дисконектить), то после сериализации он уже не маршалится =(
Re[3]: РАЗОБРАЛСЯ! (+)
От: DenIs_01  
Дата: 30.11.05 19:33
Оценка:
Если кому интересно — нашел решение, которое работает для моего класса и его наследников.
Делается через SurrogateSelector. В методах GetData/SetData нашего SurrogateSelector просто пропускаем злосчастное свойство __identity — и все.
Re[4]: РАЗОБРАЛСЯ! (+)
От: Аноним  
Дата: 07.06.08 09:00
Оценка:
Здравствуйте, DenIs_01, Вы писали:

DI_>Если кому интересно — нашел решение, которое работает для моего класса и его наследников.

DI_>Делается через SurrogateSelector. В методах GetData/SetData нашего SurrogateSelector просто пропускаем злосчастное свойство __identity — и все.

Можно поподробнее, у меня таже самая проблемка
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.