【问题标题】:How to pass StreamingContext to DataContractSerializer?如何将 StreamingContext 传递给 DataContractSerializer?
【发布时间】:2016-01-21 08:22:16
【问题描述】:

我正在尝试将一些数据传递给 DataContractSerializer 的 StreamingContext,但我不知道如何。 这是我的代码的一个小示例:

MemoryStream stream = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(typeof(OldClass));
serializer.WriteObject(stream, _OldClass);
stream.Seek(0, SeekOrigin.Begin);

serializer = new DataContractSerializer(typeof(NewClass));
    //here I would like to give the serializer e.g. a string as StreamingContext.Context
_NewClass = (NewClass)serializer.ReadObject(stream);

【问题讨论】:

标签: c# serialization datacontractserializer


【解决方案1】:

你不能。

当使用DataContractSerializerStreamingContext 实例,被传递给序列化/反序列化回调,来自内部XmlObjectSerializerContext

这里是初始化代码:

internal XmlObjectSerializerContext(DataContractSerializer serializer, DataContract rootTypeDataContract, DataContractResolver dataContractResolver)  
    : this(serializer, serializer.MaxItemsInObjectGraph, new StreamingContext(StreamingContextStates.All), serializer.IgnoreExtensionDataObject, dataContractResolver)
{
    // ...
}

如您所见,这段代码创建了new StreamingContext(StreamingContextStates.All)
为清楚起见,NetDataContractSerializer 的类似代码使用来自传递的序列化程序实例的上下文:

internal XmlObjectSerializerContext(NetDataContractSerializer serializer) 
    : this(serializer, serializer.MaxItemsInObjectGraph, serializer.Context, serializer.IgnoreExtensionDataObject)
{
}

【讨论】:

  • 参考来源herehere,我相信。
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 2012-10-22
  • 2020-06-30
  • 2014-07-15
  • 2021-11-05
  • 2015-08-31
  • 2012-07-03
  • 2020-06-16
相关资源
最近更新 更多