我有一个 classFileRecord
和 class public class ZippedFileRecord : FileRecord
,其中存储了SortedList mFiles
所有 FileRecords 和 ZippedFileRecords。我遇到的问题是我需要一种方法来区分两者,每个 ZippedFileRecord 都有一个 FileRecord 和一个名为 GetFileRecord() 的方法,它解压缩与 ZippedFileRecord 关联的文件并为其创建一个 FileRecord(如在下面的块..)
public class ZippedFileRecord : FileRecord
{
FileInfo zipFileInfo; //FileName, FileCreationTime/Date
public FileRecord myRecord = null;
public FileRecord GetFileRecord()
{
if (myRecord == null)
{
//unzip and overwrite FileRecord
UnZipFile();
//return myRecord
return myRecord;
}
else return myRecord;
}
...
...
}
现在,使用这些 FileRecords 和 ZippedFileRecords 的代码部分是用户可以在特定日期范围内获取所有 FileRecords 并获取屏幕上显示的信息的部分。由于 ZippedFileRecords 是压缩文件的代表,因此必须先解压缩它们。这是用于查找要显示的文件的代码部分:
public GetFrames(DateTime desiredStartTime, DateTime desiredEndTime)
{
for(int fileIdx = mFiles.Values.Count-1; fileIdx >= 0; --fileIdx)
{
FileRecord rec = (FileRecord)mFiles.GetByIndex(fileIdx);
if(rec.StartTime>= desiredStartTime && rec.EndTime<=desiredEndTime)
{
...
}
else
{
...
}
}
}
导致我出现问题的线路FileRecord rec = (FileRecord)mFiles.GetByIndex(fileIdx);
是有什么方法可以让我检查 mFiles[fileIdx] 是 ZippedFileRecord 还是 FileRecord 的天气?因为如果我能做到这一点,我可以只根据需要解压缩,而不是解压缩然后重新压缩可能数百个文件,每次它们要显示在屏幕上时,只有一两个实际适合用户的日期范围