出于学习目的,我正在创建一个基于 json 的平面文件数据库。我正在更改 JsonDatabase 对象包含的数据,但我只想在完成所有更改后将它们保存到光盘。
这是我目前的做法:
public class UserMatch
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class JsonDatabase : IJsonDatabase, IDisposable
{
private readonly FileStream _jsonDatabaseStream;
private List<UserMatch> _userMatches;
public List<UserMatch> UserMatches
{
get
{
if (_userMatches == default(List<UserMatch>))
{
string fileContent;
using (var sr = new StreamReader(_jsonDatabaseStream))
{
fileContent = sr.ReadToEnd();
}
_userMatches = JsonConvert.DeserializeObject<List<UserMatch>>(fileContent);
}
return _userMatches;
}
set { _userMatches = value; }
}
public JsonDatabase(string fileLocation)
{
_jsonDatabaseStream = File.Open(fileLocation, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
}
public void Dispose()
{
string serialisedJson = JsonConvert.SerializeObject(UserMatches);
using (var sr = new StreamWriter(_jsonDatabaseStream))
{
sr.Write(serialisedJson);
}
_jsonDatabaseStream.Dispose();
}
}
Dispose() 是执行此操作的正确位置吗?或者我应该创建一个单独的提交/保存方法?
最佳答案
Is Dispose() the correct place to do this?
不,它用于清理。不要通过混入其他问题来混淆事情。
Or should I rather create a separate Commit/Save method?
是的,这会迫使调用代码专注于调用它的方式和时间。而且它简单得多。
关于c# - Dispose() 是将数据保存到光盘的好地方吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46947425/