在C#中,DataContractSerializer
类用于序列化和反序列化数据,以便在不同的系统之间传输。StreamingContext
类表示用于序列化和反序列化的上下文,它包含一个用于存储序列化和反序列化过程中的状态信息的字典。
要为 DataContractSerializer
设置 StreamingContext
,您需要在创建 DataContractSerializer
实例时提供一个 StreamingContext
实例。以下是一个示例:
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
public class Program
{
public static void Main()
{
Person person = new Person { Name = "John", Age = 30 };
DataContractSerializer serializer = new DataContractSerializer(typeof(Person));
using (MemoryStream memoryStream = new MemoryStream())
{
StreamingContext streamingContext = new StreamingContext(StreamingContextStates.All, "Custom context information");
serializer.WriteObject(memoryStream, person, streamingContext);
memoryStream.Position = 0;
Person deserializedPerson = (Person)serializer.ReadObject(memoryStream, streamingContext);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
}
在这个示例中,我们创建了一个 DataContractSerializer
实例,并在创建时提供了一个 StreamingContext
实例。我们使用 WriteObject
方法将 Person
对象序列化到 MemoryStream
中,然后使用 ReadObject
方法从 MemoryStream
中反序列化 Person
对象。
StreamingContext
类型有一个构造函数,它接受两个参数:一个表示序列化和反序列化的状态,另一个表示自定义上下文信息。在这个示例中,我们将状态设置为 StreamingContextStates.All
,并提供了一个字符串作为自定义上下文信息。
请注意,在使用 DataContractSerializer
时,您需要确保您的数据类型具有 [DataContract]
和 [DataMember]
属性,以便序列化和反序列化。
领取专属 10元无门槛券
手把手带您无忧上云