private void FromStream(Stream dataStream) { using (var binaryReader = new BinaryReader(dataStream)) { Signature = binaryReader.ReadInt32(); Reader <T> fileReader; switch (Signature) { case 0x36424457: fileReader = new WDB6.Reader <T>(dataStream); break; case 0x35424457: fileReader = new WDB5.Reader <T>(dataStream); break; case 0x32424457: fileReader = new WDB2.Reader <T>(dataStream); break; case 0x43424457: fileReader = new WDBC.Reader <T>(dataStream); break; default: throw new ArgumentOutOfRangeException(Signature.ToString("X")); } fileReader.OnRecordLoaded += (index, record) => this[index] = (T)record; fileReader.Load(); HasIndexTable = fileReader.FileHeader.HasIndexTable; HasStringTable = fileReader.FileHeader.HasStringTable; IndexField = fileReader.FileHeader.IndexField; } }