forked from ln-dotnet/ln.json
46 lines
846 B
C#
46 lines
846 B
C#
using System;
|
|
using System.IO;
|
|
namespace sharp.json
|
|
{
|
|
public class FileBackedJSONValue<T>
|
|
{
|
|
public string FileName { get; set; }
|
|
public DateTime LoadedWriteTime { get; set; }
|
|
|
|
T current;
|
|
JSON jsource;
|
|
|
|
public FileBackedJSONValue(string filename)
|
|
{
|
|
FileName = filename;
|
|
}
|
|
|
|
public T CurrentValue {
|
|
get
|
|
{
|
|
if (!File.Exists(FileName)){
|
|
current = default(T);
|
|
} else if ((current == null) || (File.GetLastWriteTime(FileName) != LoadedWriteTime))
|
|
{
|
|
jsource = JSON.ReadFrom(FileName);
|
|
LoadedWriteTime = File.GetLastWriteTime(FileName);
|
|
|
|
current = jsource.To<T>();
|
|
}
|
|
return current;
|
|
}
|
|
set
|
|
{
|
|
current = value;
|
|
Save();
|
|
}
|
|
}
|
|
|
|
public void Save(){
|
|
JSONConverter.From(current).WriteTo(FileName,true);
|
|
LoadedWriteTime = File.GetLastWriteTime(FileName);
|
|
}
|
|
|
|
}
|
|
}
|