annotate Source/Mapping/MemberMappers/BinarySerialisationMapper.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Runtime.Serialization.Formatters.Binary;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 namespace BLToolkit.Mapping.MemberMappers
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 public class BinarySerialisationMapper : MemberMapper
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 public override void SetValue(object o, object value)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 if (value != null) this.MemberAccessor.SetValue(o, BinarydesSrialize((byte[])value));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public override object GetValue(object o)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 return BinarySerialize(this.MemberAccessor.GetValue(o));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 static byte[] BinarySerialize(object obj)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 if (obj == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 MemoryStream memoryStream = new MemoryStream();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 BinaryFormatter binaryFormatter = new BinaryFormatter();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 binaryFormatter.Serialize(memoryStream, obj);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 memoryStream.Flush();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 memoryStream.Position = 0;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 return memoryStream.ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 static object BinarydesSrialize(byte[] data)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 using (var stream = new MemoryStream(data))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 var formatter = new BinaryFormatter();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 stream.Seek(0, SeekOrigin.Begin);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 return formatter.Deserialize(stream);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 }