public virtual void Save(DataFile <T> dataFile) { if (!dataFile.ParentDirectory.Exists) { dataFile.ParentDirectory.Create(true); } using (var writer = dataFile.File.GetContent().GetWriter()) { this.Serializer.Serialize(dataFile.Value, writer); } }
public virtual T Load(DataFile <T> dataFile) { const int retrycount = 10; for (var i = 0; i < retrycount; i++) { try { using (var reader = dataFile.File.GetContent().GetReader()) { var retval = this.Deserializer.Deserialize(reader); if (retval is IObjectWithGeneratedDefaults) { if (((IObjectWithGeneratedDefaults)retval).RequiresGeneratedDefaults) { ((IObjectWithGeneratedDefaults)retval).GenerateDefaults(); Save(dataFile, retval); } } return(retval); } } catch (Exception) { if (i == retrycount - 1) { throw; } } System.Threading.Thread.Sleep(500); } throw new InvalidOperationException(); }