помогите с сериализацией наследника 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 типа фильтра? т.е. чтоб я мог посмотреть все значения _до_ маршалинга и сравнить их со значениями _после_ дисконнекта (ну и вернуть их назад, самое главное)...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.