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