我正在构建一个通用的xml存储库,它使用datacontractserializer对文件进行序列化/反序列化,我不确定如何确保在读取文件时不能更改这些文件。
我读取所有文件的代码如下:
public IQueryable<T> All<T>() where T : class, new()
{
List<T> instances = new List<T>();
DirectoryInfo datadirectory = new DirectoryInfo(this.storageLocation);
if (datadirectory.Exists)
{
foreach (FileInfo datafile in datadirectory.GetFiles("*.xml", SearchOption.TopDirectoryOnly))
{
lock (this.syncRoot)
{
instances.Add(this.converter.Build<T>(datafile.FullName));
}
}
}
return instances.AsQueryable();
}
我不确定的是把锁放在哪里?是应该如上所述,还是应该将DirectoryInfo包装为read?
线程对我来说有点神秘,所以任何输入都将非常感谢。