Mercurial > pub > bltoolkit
comparison Source/Mapping/MemberMappers/BinarySerialisationMapper.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.IO; | |
| 2 using System.Runtime.Serialization.Formatters.Binary; | |
| 3 | |
| 4 namespace BLToolkit.Mapping.MemberMappers | |
| 5 { | |
| 6 public class BinarySerialisationMapper : MemberMapper | |
| 7 { | |
| 8 public override void SetValue(object o, object value) | |
| 9 { | |
| 10 if (value != null) this.MemberAccessor.SetValue(o, BinarydesSrialize((byte[])value)); | |
| 11 } | |
| 12 | |
| 13 public override object GetValue(object o) | |
| 14 { | |
| 15 return BinarySerialize(this.MemberAccessor.GetValue(o)); | |
| 16 } | |
| 17 | |
| 18 static byte[] BinarySerialize(object obj) | |
| 19 { | |
| 20 if (obj == null) return null; | |
| 21 MemoryStream memoryStream = new MemoryStream(); | |
| 22 BinaryFormatter binaryFormatter = new BinaryFormatter(); | |
| 23 binaryFormatter.Serialize(memoryStream, obj); | |
| 24 memoryStream.Flush(); | |
| 25 memoryStream.Position = 0; | |
| 26 return memoryStream.ToArray(); | |
| 27 } | |
| 28 | |
| 29 static object BinarydesSrialize(byte[] data) | |
| 30 { | |
| 31 using (var stream = new MemoryStream(data)) | |
| 32 { | |
| 33 var formatter = new BinaryFormatter(); | |
| 34 stream.Seek(0, SeekOrigin.Begin); | |
| 35 return formatter.Deserialize(stream); | |
| 36 } | |
| 37 } | |
| 38 } | |
| 39 } |
