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