Line data Source code
1 : using System.Collections.Generic;
2 : using System.IO;
3 : using Cqrs.Events;
4 : using Microsoft.WindowsAzure.Storage.Table;
5 : using Newtonsoft.Json;
6 : using Newtonsoft.Json.Converters;
7 :
8 : namespace Cqrs.Azure.BlobStorage
9 : {
10 : public abstract class TableEntity<TData>
11 : : TableEntity
12 0 : {
13 : public static JsonSerializerSettings DefaultSettings { get; private set; }
14 :
15 : static TableEntity()
16 : {
17 : DefaultSettings = DefaultJsonSerializerSettings.DefaultSettings;
18 : }
19 :
20 0 : protected virtual TData Deserialise(string json)
21 : {
22 : using (var stringReader = new StringReader(json))
23 : using (var jsonTextReader = new JsonTextReader(stringReader))
24 : return GetSerialiser().Deserialize<TData>(jsonTextReader);
25 : }
26 :
27 0 : protected virtual string Serialise(TData data)
28 : {
29 : string dataContent = JsonConvert.SerializeObject(data, GetSerialisationSettings());
30 :
31 : return dataContent;
32 : }
33 :
34 0 : protected virtual JsonSerializerSettings GetSerialisationSettings()
35 : {
36 : return DefaultSettings;
37 : }
38 :
39 0 : protected virtual JsonSerializer GetSerialiser()
40 : {
41 : JsonSerializerSettings settings = GetSerialisationSettings();
42 : return JsonSerializer.Create(settings);
43 : }
44 : }
45 : }
|