Как я могу установить StreamingContext в Silverlight DataContractSerizer? - PullRequest
2 голосов
/ 03 августа 2011

Мне нужно сделать глубокое копирование в Silverlight, что я могу сделать с помощью проверенного и сериализованного / десериализованного подхода.Скопированные объекты не являются точными клонами - им нужно изменить некоторые свои свойства в копии.

Я должен иметь возможность сделать что-то вроде этого:

[OnDeserialized()]
public void OnDeserializedMethod(StreamingContext context)
{
  if (context.State == StreamingContextStates.Clone)
  {
    //stuff
  }       
}

где StreamingContext устанавливается с помощью NetDataContractSerializer:

NetDataContractSerializer ds = new NetDataContractSerializer(new StreamingContext(StreamingContextStates.Clone));

Silverlight не имеет NetDataContractSerializer, хотя: - (.

Так есть ли способ установить StreamingContext на DataContractSerializer, чтобы дать мне что-то для работы? Я не могу просто слепо применять свои изменения к каждой операции сериализации, это касается только конкретного случая копии.

Или, альтернативно,Есть другой метод, который дает мне аналогичные зацепки в процессе (де) сериализации, чтобы я мог играть с данными?

(я смотрел на реализацию IDataContractSurrogate, но а) это было больно и б) Silverlight не делаету меня тоже нет этого ...)

1 Ответ

1 голос
/ 11 августа 2011

Я пришел к выводу, что вы не можете сделать это, поэтому я думаю, что альтернативный подход в порядке.

...