ln.json/FileBackedJSONValue.cs

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);
}
}
}