public void Load() { BinaryReader reader = new BinaryReader(File.Open(Name, FileMode.Open)); while (reader.BaseStream.Length != reader.BaseStream.Position) { RecordDescription description = RecordDescription.LoadRecordFromType(reader); if (description == null) { break; } description.Load(reader); AddDescription(description); } // read the records int count = Description.Count; if (count <= 0) { reader.Close(); throw new Exception("Database corrupted"); } while (reader.BaseStream.Length != reader.BaseStream.Position) { Record record = new Record(count); for (int i = 0; i < Description.Count; i++) { Value val = Description[i].PresetValue.Clone(); val.Load(reader); record.SetValue(val, i); } AddRecord(record); } reader.Close(); }