Guest User

Untitled

a guest
Oct 16th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. public static class BinaryDataContractSerializer
  2. {
  3. public static byte[] Serialize<T>(T obj) where T : class
  4. {
  5. if (obj == null)
  6. return null;
  7. var serializer = new DataContractSerializer(typeof(T));
  8. using (var memStream = new MemoryStream())
  9. {
  10. using (var writer = XmlDictionaryWriter.CreateBinaryWriter(memStream))
  11. {
  12. serializer.WriteObject(writer, obj);
  13. }
  14. return memStream.ToArray();
  15. }
  16. }
  17.  
  18. public static T Deserialize<T>(Response response) where T : class
  19. {
  20. if (response == null)
  21. return default(T);
  22. var serializer = new DataContractSerializer(typeof(T));
  23. using (var stream = new MemoryStream(response.SerializedData))
  24. {
  25. using (var reader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max))
  26. {
  27. return (T)serializer.ReadObject(reader);
  28. }
  29. }
  30. }
  31. }
  32.  
  33. [DataContract]
  34. public class Request
  35. {
  36. [DataMember]
  37. public string Payload { get; set; }
  38. }
  39.  
  40. [DataContract]
  41. public class Response
  42. {
  43. [DataMember]
  44. public byte[] SerializedData { get; set; }
  45. [DataMember]
  46. public string QualifiedAssemblyDataType { get; set; }
  47. }
  48.  
  49. [DataContract]
  50. public class DownloadFileResponse
  51. {
  52. [DataMember]
  53. public byte[] Data { get; set; }
  54. }
  55.  
  56. public class ServiceImpl
  57. {
  58. public Response Execute(Request request)
  59. {
  60. // Assuming the request is to read data from a file
  61. byte[] data = File.ReadAllBytes(request.Payload);
  62. var responseData = new DownloadFileResponse
  63. {
  64. Data = data
  65. };
  66. return new Response
  67. {
  68. QualifiedAssemblyDataType = typeof(DownloadFileResponse).AssemblyQualifiedName,
  69. SerializedData = BinaryDataContractSerializer.Serialize(responseData)
  70. };
  71. }
  72. }
Add Comment
Please, Sign In to add comment