Beispiel #1
0
        public static byte[] Serialize(Type type, object obj)
        {
            var data = new List <byte[]>();
            {
                var ms         = new MemoryStream();
                var serializer = new DataContractSerializer(type);
                serializer.WriteObject(ms, obj);
                data.Add(ms.ToArray());
            }
            // 画像だけ特別処理
            var image = GetImage(obj);

            if (image != null)
            {
                for (int i = 0; i < image.Count; ++i)
                {
                    if (image[i] != null)
                    {
                        var ms2     = new MemoryStream();
                        var encoder = new PngBitmapEncoder();
                        encoder.Frames.Add(image[i]);
                        encoder.Save(ms2);
                        data.Add(ms2.ToArray());
                    }
                    else
                    {
                        data.Add(new byte[0]);
                    }
                }
            }
            return(RPCData.CombineChunks(data));
        }
Beispiel #2
0
 private async Task Send(RPCMethodId id, AddQueueRequest obj)
 {
     if (client != null)
     {
         var data       = new List <byte[]>();
         var ms         = new MemoryStream();
         var serializer = new DataContractSerializer(typeof(AddQueueRequest));
         serializer.WriteObject(ms, obj);
         data.Add(ms.ToArray());
         var    objbyes = RPCData.CombineChunks(data);
         byte[] bytes   = RPCData.Combine(
             BitConverter.GetBytes((short)id),
             BitConverter.GetBytes(objbyes.Length),
             objbyes);
         await client.GetStream().WriteAsync(bytes, 0, bytes.Length);
     }
 }