如何在Silverlight DataContractSerizer中设置StreamingContext?

时间:2011-08-03 14:48:17

标签: silverlight datacontractserializer deep-copy

我需要在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给我一些合作的东西吗?我不能盲目地将我的更改应用于每个序列化操作,它只是在副本的特定情况下。

或者,或者,是否有另一种方法可以为(de)序列化过程提供类似的钩子,以便我可以使用数据?

(我已经考虑过实施IDataContractSurrogate,但是a)这很痛苦,而且b)Silverlight没有其中任何一个......)

1 个答案:

答案 0 :(得分:1)

我得出的结论是你不能这样做,所以我猜一种替代方法是有条理的。