私はすべてのFileRecordsとZippedFileRecordsを持つクラスFileRecord
とクラスを持っています。私が直面している問題は、この 2 つを区別する方法が必要だということです。各 ZippedFileRecord には、FileRecord と、ZippedFileRecord に関連付けられたファイルを解凍し、そのための FileRecord を作成する GetFileRecord() というメソッドがあります (以下のチャンク..)public class ZippedFileRecord : FileRecord
SortedList mFiles
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 は Zipped ファイルの代表であるため、最初に解凍する必要があります。表示するファイルを探すために使用するコードの一部を次に示します。
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であるかどうかを確認する方法はありますか? それができれば、画面に表示するたびに数百のファイルを解凍してから再圧縮するのではなく、必要なときにのみ解凍できるため、ユーザーの日付範囲に実際に収まるのは1つまたは2つだけです