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)); }
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); } }