-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathDataService.cs
34 lines (27 loc) · 986 Bytes
/
DataService.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace Instant.Training.UI.Services
{
using System;
using System.IO;
using Instant.Training.UI.Services.Interfaces;
using Newtonsoft.Json;
public class DataService : IDataService
{
private readonly IAppDataService _appDataService;
public DataService(IAppDataService appDataService)
{
_appDataService = appDataService;
}
public T Load<T>(string dataName, T emptyData = default)
{
return Load(dataName, () => emptyData);
}
public T Load<T>(string dataName, Func<T> emptyData)
{
return JsonConvert.DeserializeObject<T>(File.ReadAllText(_appDataService.GetFile($"Data/{dataName}.json", () => JsonConvert.SerializeObject(emptyData()))));
}
public void Save(string dataName, object data)
{
File.WriteAllText(_appDataService.GetFile($"Data/{dataName}.json"), JsonConvert.SerializeObject(data));
}
}
}