Mercurial > pub > bltoolkit
comparison Source/Mapping/MemberMappers/BinarySerialisationToBase64StringMapper.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 using System; | |
2 using System.IO; | |
3 using System.Runtime.Serialization.Formatters.Binary; | |
4 | |
5 namespace BLToolkit.Mapping.MemberMappers | |
6 { | |
7 public class BinarySerialisationToBase64StringMapper : MemberMapper | |
8 { | |
9 public override void SetValue(object o, object value) | |
10 { | |
11 if (value != null) this.MemberAccessor.SetValue(o, BinarydeSerialize(Convert.FromBase64String(value.ToString()))); | |
12 } | |
13 | |
14 public override object GetValue(object o) | |
15 { | |
16 return Convert.ToBase64String(BinarySerialize(this.MemberAccessor.GetValue(o))); | |
17 } | |
18 | |
19 static byte[] BinarySerialize(object obj) | |
20 { | |
21 if (obj == null) return null; | |
22 MemoryStream memoryStream = new MemoryStream(); | |
23 BinaryFormatter binaryFormatter = new BinaryFormatter(); | |
24 binaryFormatter.Serialize(memoryStream, obj); | |
25 memoryStream.Flush(); | |
26 memoryStream.Position = 0; | |
27 return memoryStream.ToArray(); | |
28 } | |
29 | |
30 static object BinarydeSerialize(byte[] data) | |
31 { | |
32 using (var stream = new MemoryStream(data)) | |
33 { | |
34 var formatter = new BinaryFormatter(); | |
35 stream.Seek(0, SeekOrigin.Begin); | |
36 return formatter.Deserialize(stream); | |
37 } | |
38 } | |
39 } | |
40 } |