наша задача довольно проста, у нас есть граф объектов, где каждый объект (IDItem) имеет уникальный идентификатор.
Граф объектов существует два раза - на клиенте и на сервере.
Теперь мы передаем некоторые сериализуемые команды на сервер. Команда имеет в качестве полей некоторые из IDItems. IDItems реализуют интерфейс ISerializable и хранят свои идентификаторы только в SerializationInfo. Как:
// The method called when serializing a IDItem.
void GetObjectData(SerializationInfo info, StreamingContext context)
{
// Instead of serializing this object, just save the ID
info.AddValue("ID", this.GetID());
}
Проблема в том, как мы можем присвоить существующий объект экземпляру, который создает десериализатор? Очевидно, что-то похожее на следующее в конструкторе ISerializable не работает, потому что идентификатор «this» только для чтения:
//does not work
protected IDItem(SerializationInfo info, StreamingContext context)
{
this = GlobalObject.GetIDItem(info.GetString("ID"));
}
Так есть идеи, как мы можем присвоить существующий объект десериализованному объекту?
С наилучшими пожеланиями,
thalm