Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class BinaryDataContractSerializer
- {
- public static byte[] Serialize<T>(T obj) where T : class
- {
- if (obj == null)
- return null;
- var serializer = new DataContractSerializer(typeof(T));
- using (var memStream = new MemoryStream())
- {
- using (var writer = XmlDictionaryWriter.CreateBinaryWriter(memStream))
- {
- serializer.WriteObject(writer, obj);
- }
- return memStream.ToArray();
- }
- }
- public static T Deserialize<T>(Response response) where T : class
- {
- if (response == null)
- return default(T);
- var serializer = new DataContractSerializer(typeof(T));
- using (var stream = new MemoryStream(response.SerializedData))
- {
- using (var reader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max))
- {
- return (T)serializer.ReadObject(reader);
- }
- }
- }
- }
- [DataContract]
- public class Request
- {
- [DataMember]
- public string Payload { get; set; }
- }
- [DataContract]
- public class Response
- {
- [DataMember]
- public byte[] SerializedData { get; set; }
- [DataMember]
- public string QualifiedAssemblyDataType { get; set; }
- }
- [DataContract]
- public class DownloadFileResponse
- {
- [DataMember]
- public byte[] Data { get; set; }
- }
- public class ServiceImpl
- {
- public Response Execute(Request request)
- {
- // Assuming the request is to read data from a file
- byte[] data = File.ReadAllBytes(request.Payload);
- var responseData = new DownloadFileResponse
- {
- Data = data
- };
- return new Response
- {
- QualifiedAssemblyDataType = typeof(DownloadFileResponse).AssemblyQualifiedName,
- SerializedData = BinaryDataContractSerializer.Serialize(responseData)
- };
- }
- }
Add Comment
Please, Sign In to add comment